diff --git a/.depend b/.depend index f76b88960702..1c6f4d2d557e 100644 --- a/.depend +++ b/.depend @@ -155,11 +155,13 @@ utils/local_store.cmx : \ utils/local_store.cmi utils/local_store.cmi : utils/misc.cmo : \ + utils/utf8_lexeme.cmi \ utils/format_doc.cmi \ utils/config.cmi \ utils/build_path_prefix_map.cmi \ utils/misc.cmi utils/misc.cmx : \ + utils/utf8_lexeme.cmx \ utils/format_doc.cmx \ utils/config.cmx \ utils/build_path_prefix_map.cmx \ @@ -216,6 +218,11 @@ utils/terminfo.cmo : \ utils/terminfo.cmx : \ utils/terminfo.cmi utils/terminfo.cmi : +utils/utf8_lexeme.cmo : \ + utils/utf8_lexeme.cmi +utils/utf8_lexeme.cmx : \ + utils/utf8_lexeme.cmi +utils/utf8_lexeme.cmi : utils/warnings.cmo : \ utils/misc.cmi \ utils/format_doc.cmi \ @@ -414,6 +421,7 @@ parsing/docstrings.cmi : \ parsing/location.cmi parsing/lexer.cmo : \ utils/warnings.cmi \ + utils/utf8_lexeme.cmi \ parsing/parser.cmi \ utils/misc.cmi \ parsing/location.cmi \ @@ -422,6 +430,7 @@ parsing/lexer.cmo : \ parsing/lexer.cmi parsing/lexer.cmx : \ utils/warnings.cmx \ + utils/utf8_lexeme.cmx \ parsing/parser.cmx \ utils/misc.cmx \ parsing/location.cmx \ @@ -567,6 +576,7 @@ parsing/syntaxerr.cmi : \ parsing/location.cmi parsing/unit_info.cmo : \ utils/warnings.cmi \ + utils/utf8_lexeme.cmi \ utils/misc.cmi \ parsing/location.cmi \ utils/load_path.cmi \ @@ -574,6 +584,7 @@ parsing/unit_info.cmo : \ parsing/unit_info.cmi parsing/unit_info.cmx : \ utils/warnings.cmx \ + utils/utf8_lexeme.cmx \ utils/misc.cmx \ parsing/location.cmx \ utils/load_path.cmx \ @@ -731,6 +742,7 @@ typing/datarepr.cmi : \ typing/data_types.cmi typing/env.cmo : \ utils/warnings.cmi \ + utils/utf8_lexeme.cmi \ parsing/unit_info.cmi \ typing/typing_recovery.cmi \ typing/types.cmi \ @@ -758,6 +770,7 @@ typing/env.cmo : \ typing/env.cmi typing/env.cmx : \ utils/warnings.cmx \ + utils/utf8_lexeme.cmx \ parsing/unit_info.cmx \ typing/typing_recovery.cmx \ typing/types.cmx \ @@ -1137,17 +1150,17 @@ typing/mtype.cmi : \ typing/ident.cmi \ typing/env.cmi typing/oprint.cmo : \ + utils/utf8_lexeme.cmi \ parsing/pprintast.cmi \ typing/outcometree.cmi \ - utils/misc.cmi \ parsing/lexer.cmi \ utils/format_doc.cmi \ parsing/asttypes.cmi \ typing/oprint.cmi typing/oprint.cmx : \ + utils/utf8_lexeme.cmx \ parsing/pprintast.cmx \ typing/outcometree.cmi \ - utils/misc.cmx \ parsing/lexer.cmx \ utils/format_doc.cmx \ parsing/asttypes.cmx \ @@ -4072,10 +4085,12 @@ asmcomp/selection.cmx : \ asmcomp/stackframe.cmo : \ asmcomp/stackframegen.cmi \ asmcomp/mach.cmi \ + utils/config.cmi \ asmcomp/stackframe.cmi asmcomp/stackframe.cmx : \ asmcomp/stackframegen.cmx \ asmcomp/mach.cmx \ + utils/config.cmx \ asmcomp/stackframe.cmi endif # ifeq "$(ARCH)" "power" ifeq "$(ARCH)" "s390x" @@ -8547,11 +8562,11 @@ debugger/debugger_config.cmx : \ debugger/debugger_config.cmi debugger/debugger_config.cmi : debugger/debugger_lexer.cmo : \ - utils/misc.cmi \ + utils/utf8_lexeme.cmi \ debugger/debugger_parser.cmi \ debugger/debugger_lexer.cmi debugger/debugger_lexer.cmx : \ - utils/misc.cmx \ + utils/utf8_lexeme.cmx \ debugger/debugger_parser.cmx \ debugger/debugger_lexer.cmi debugger/debugger_lexer.cmi : \ @@ -9577,20 +9592,20 @@ ocamldoc/odoc_latex_style.cmx : \ ocamldoc/odoc_latex_style.cmi ocamldoc/odoc_latex_style.cmi : ocamldoc/odoc_lexer.cmo : \ + utils/utf8_lexeme.cmi \ otherlibs/str/str.cmi \ ocamldoc/odoc_parser.cmi \ ocamldoc/odoc_messages.cmi \ ocamldoc/odoc_global.cmi \ ocamldoc/odoc_comments_global.cmi \ - utils/misc.cmi \ ocamldoc/odoc_lexer.cmi ocamldoc/odoc_lexer.cmx : \ + utils/utf8_lexeme.cmx \ otherlibs/str/str.cmx \ ocamldoc/odoc_parser.cmx \ ocamldoc/odoc_messages.cmx \ ocamldoc/odoc_global.cmx \ ocamldoc/odoc_comments_global.cmx \ - utils/misc.cmx \ ocamldoc/odoc_lexer.cmi ocamldoc/odoc_lexer.cmi : \ ocamldoc/odoc_parser.cmi @@ -9732,12 +9747,12 @@ ocamldoc/odoc_name.cmi : \ parsing/longident.cmi \ typing/ident.cmi ocamldoc/odoc_ocamlhtml.cmo : \ + utils/utf8_lexeme.cmi \ otherlibs/str/str.cmi \ - utils/misc.cmi \ ocamldoc/odoc_ocamlhtml.cmi ocamldoc/odoc_ocamlhtml.cmx : \ + utils/utf8_lexeme.cmx \ otherlibs/str/str.cmx \ - utils/misc.cmx \ ocamldoc/odoc_ocamlhtml.cmi ocamldoc/odoc_ocamlhtml.cmi : ocamldoc/odoc_parameter.cmo : \ diff --git a/.gitattributes b/.gitattributes index dd78c65d20a4..0f0fcf3f999e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -122,11 +122,12 @@ otherlibs/unix/stat_win32.c typo.long-line otherlibs/unix/symlink_win32.c typo.long-line # Some Unicode characters here and there -utils/misc.ml typo.non-ascii +utils/utf8_lexeme.ml typo.non-ascii runtime/sak.c typo.non-ascii tools/opam/process.sh typo.non-ascii testsuite/tests/** typo.missing-header typo.long-line=may +testsuite/tests/basic-manyargs/outgoing_stack_args_.c typo.missing-header=false testsuite/tests/lib-bigarray-2/bigarrf.f typo.tab linguist-language=Fortran testsuite/tests/lib-unix/win-stat/fakeclock.c typo.missing-header=false testsuite/tests/misc-unsafe/almabench.ml typo.long-line diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 72076946af3b..55b593e55ba1 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,6 +12,8 @@ Welcome to OCaml's Issue tracker! OCaml's developers use this tracker for bugs and feature requests only, rather than user support. +**Note**: please do not include AI-generated text in your issue description or further comments. For more details, see our [guidelines relevant to AI-assisted bug reports](https://github.com/ocaml/ocaml/blob/trunk/AI.md#guidelines-relevant-to-ai-assisted-bug-reports). + If you have questions about *using* OCaml, please ask at https://discuss.ocaml.org (more people read Discuss than this tracker, and you'll get confirmation of whether you've really found a bug or need a new diff --git a/.github/workflows/build-cross.yml b/.github/workflows/build-cross.yml index 567f4a57d400..2fd172bb02b7 100644 --- a/.github/workflows/build-cross.yml +++ b/.github/workflows/build-cross.yml @@ -277,6 +277,11 @@ jobs: cat example.ml $HOME/cross/bin/ocamlopt.opt example.ml -o example -verbose file example + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm - name: Run example uses: reactivecircus/android-emulator-runner@v2 with: diff --git a/.github/workflows/hygiene.yml b/.github/workflows/hygiene.yml index a312d9a6d580..0782cba8fad3 100644 --- a/.github/workflows/hygiene.yml +++ b/.github/workflows/hygiene.yml @@ -18,7 +18,7 @@ concurrency: jobs: hygiene: name: Checks - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: GitHub Context run: echo $GITHUB_CONTEXT diff --git a/AI.md b/AI.md index fb2b33917988..9d471f857376 100644 --- a/AI.md +++ b/AI.md @@ -29,3 +29,30 @@ a direct counterpart, with entirely human-produced content. of code that contributors do not understand; plagiarised works; hallucinated security reports; or experiments involving humans without their advance consent. + +## Guidelines relevant to AI-assisted bug reports + +Our advice is to avoid adding LLM-generated contents or explanations to +your initial bug report: a bug report should be to the point and +contain only human-verified information. Adding LLM-generated contents +runs counter to those objectives, even if the generated contents +looks useful to you. + +Indeed, judging the quality of a LLM-generated content about an +unknown code base requires a lot of effort. Simultaneously, estimating +the faithfulness of LLM-generated contents without knowing your prior +understanding of the code base, nor your prompt, nor the model context +also requires a lot of effort. Such efforts are in most cases better +spent investigating the bug itself. + +Moreover, mixing human and LLM-generated contents in the same report +without a clear separation should be imperatively avoided. Indeed, +the absence of a clear delineation between the two contents makes it +very hard to ascertain the reliability of any part of the mixed +contents. + +We also advise some caution when shrinking reproduction case with +LLMs. If you have any doubts about the LLM-shrinked reproduction case, +please report both the original reproduction case and the shrinked +one. In extreme cases, we have witnessed LLMs convincing people to +reduce their bug report to a hallucination. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 75e035e2b7ff..fae13919f611 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,21 +7,15 @@ OCaml distribution. These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document itself in a pull request. -This document assumes that you have a patch against the sources of the -compiler distribution, that you wish to submit to the OCaml -maintainers upstream. See [INSTALL.adoc](INSTALL.adoc) for details on -how to build the compiler distribution from sources. See -[HACKING.adoc](HACKING.adoc) for details on how to modify the sources. - ## Contribution Modifying the sources is far from the only way to contribute to the -OCaml distribution. Bug reports (in particular when they come with -a reproducible example), simple typos or clarifications in the -documentation also help, and help evaluating and integrating existing -change proposals also helps. Providing good answers on the discussion -forums, or asking the good questions that highlight deficiencies in -existing documentations, also help. +OCaml distribution. Other contributions include: +- Bug reports (in particular when they come with a reproducible example). +- Simple typos or clarifications in the documentation +- Help evaluating and integrating existing change proposals. +- Providing good answers on the discussion forums +- Asking questions that highlight deficiencies in existing documentations. There are also many valuable ways to contribute to the wider OCaml ecosystem that do not involve changes to the OCaml distribution. @@ -31,6 +25,13 @@ proposals against the OCaml distribution. (Code changes, but also improvement to documentation or implementation comments, which are valuable changes on their own.) +This document assumes that you have a patch against the sources of the +compiler distribution or an idea for such a patch. + +This document is concerned with the process of getting your work merged +upstream. For advice on how to build the compiler from sources +see [INSTALL.adoc](INSTALL.adoc) and [HACKING.adoc](HACKING.adoc) instead. + ## Workflow All changes to the OCaml distribution need to be processed through the @@ -84,6 +85,7 @@ The current list of maintainers is as follows: - @OlivierNicole Olivier Nicole - @sadiqj Sadiq Jaffer - @shindere Sébastien Hinderer +- @smuenzel Stefan Muenzel - @stedolan Stephen Dolan - @trefis Thomas Refis - @xavierleroy Xavier Leroy @@ -114,6 +116,25 @@ the PR or issue. For more information about when and how new releases are published, see [the release introduction](release-info/introduction.md). +## Pull-Request guideline + +You should open a pull request as a way to discuss the changes you are +proposing. In some cases, you can open a pull request which contains proposed +changes directly. In other cases, you should first open a pull request on the +https://github.com/ocaml/RFCs repository to discuss some aspects of your changes. + +Chose the pull request route if you have a mature implementation, if you have +already discussed the changes in advance, if your changes are purely +implementation details without wider implications, or some such situation. + +Chose the RFC route if you merely have a prototype, if you haven't discussed or +iterated on your design much, if your changes may impact the ecosystem at large +(the users, the libraries, the build systems, etc.). Basically, use the RFC route +to get more feedback on the earlier stages of your work. + +The rest of this document is concerned only with the pull request route. For +the RFC route, you can find some documentation on the RFC repository directly. + ## Coding guidelines You should not leave trailing whitespace; not have line longer than 80 diff --git a/Changes b/Changes index a7cc9fb63bcd..991e62d55c9c 100644 --- a/Changes +++ b/Changes @@ -16,8 +16,20 @@ Working version - #14692: Allow unparenthesized application expressions in record update syntax (Stephen Dolan, review by Damien Doligez) +- #15051: the wildcard `_` now parses in all simple expressions as `Pexp_hole` + and in all module expressions as `Pmod_hole`. These parsetree nodes must be + transformed by ppx rewriters; the compiler itself always rejects them. + (David Allsopp and Nailen Matschke, review by Florian Angeletti) + ### Runtime system: +- #14988: Don't copy continuations in Weak.get_copy. + (Jeremy Yallop, review by Stefan Muenzel) + +- #14773 : Activate Haiku native backend + (Sylvain Kerjean, review by Kate Deplaix and Nicolas Ojeda Bar) + Enable native-code backend and testsuite on BeOS/Haiku. + - #10258: Overhaul the locale code used for mingw/msvc in float<->string conversions. (David Allsopp, review by Antonin Décimo) @@ -118,6 +130,42 @@ Working version - #14506: Add frame pointers support for RISC-V Linux. (Miod Vallat and Tim McGilchrist, review by Zane Hambly) +- #14933: Respect `sysconf(_SC_SIGSTKSZ)` when choosing the size for the + alternate signal stack, avoiding fatal errors when linked against musl libc on + some Intel CPUs. + (Nat Mote, review by Florian Angeletti and Miod Vallat) + +- #14505: Add frame pointer support to POWER linux. + Maintains an ELFv2 frame pointer in r31. The allocation pointer is + moved from r31 to r23 for enabled and disabled frame pointers. + r31 stays allocatable when frame pointers are disabled + (Tim McGilchrist, review by Zane Hambly and Olivier Nicole) + +- #14814: a `caml_result_find_exception` helper for the `caml_result` type + (Gabriel Scherer, review by Nicolás Ojeda Bär, request by Chris Vine) + +- #14872: harden loading of bytecode executable files against corrupted + or malicious files having 2^29 TOC entries or more. + (Xavier Leroy, review by Nicolás Ojeda Bär) + +* #14997: Default to and recommend large file and year 2038 support on 32-bit + systems. LFS and 64-bit `time_t` _checks_ can be disabled by passing + respectively `--disable-largefile` and `--disable-year2038` to configure. + (Antonin Décimo, review by Miod Vallat) + +- #15019, #15030, OSEC-2026-18: `Marshal.from_{string,bytes}`: guard against + overflow in the computation of the total data length. + (Xavier Leroy, report by Akshay Singh, review by Nicolás Ojeda Bär + and Antonin Décimo) + +- #15001: Add runtime events counters EV_C_MAJOR_DIRECT_ALLOCATED_WORDS, + EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS and EV_C_MAJOR_RESUMED_ALLOCATED_WORDS, + reporting the words allocated directly in the major heap as opposed to + promoted from the minor heap, the words suspended during a GC ramp-up phase + and the words returned by Gc.ramp_down. Add the span + EV_EXPLICIT_GC_RAMP_UP covering a call to Gc.ramp_up. + (Tim McGilchrist, review by Sadiq Jaffer and Gabriel Scherer) + ### Type system: * #11648, #14766, #14768, #14776, #14801, #14842, #14845: Keep expansion and @@ -167,6 +215,25 @@ Working version - #14575: Emit direct assembly for `Atomic.fetch_and_add` rather than going through C (Zane Hambly, review by Olivier Nicole and KC Sivaramakrishnan) + +- #15002: s390x: emit `sqdbr` for square root and `lrvgr` for byte swap + rather than calling into C + (Zane Hambly, review by ) + +- #15005: riscv: emit `fsqrt.d` for square root rather than calling into C + (Zane Hambly, review by Miod Vallat and Xavier Leroy) + +- #15006: power: emit `fsqrt` for square root rather than calling into C + (Zane Hambly, review by Miod Vallat and Xavier Leroy) + +- #15008: emit the fused multiply-add for `Float.fma` on arm64, power, + riscv and s390x rather than calling into C + (Zane Hambly, review by Miod Vallat and Xavier Leroy) + +- #15017: emit the rounding instructions for `Float.round`, `Float.trunc`, + `ceil` and `floor` on arm64 and power rather than calling into C + (Zane Hambly, review by Miod Vallat and Nicolás Ojeda Bär) + * #13919: optimize `lazy v` when `v` is a structured constant (below a size threshold), so that `Lazy.from_val v` should not be necessary anymore in most cases. @@ -208,8 +275,17 @@ Working version barrier; the default is chosen at configure time and can be overridden. (Sebastian Pop and Xavier Leroy, review by Xavier Leroy and Olivier Nicole) +- #14898, #15035: do not trust GADT equations introduced by refutable arguments + in the Lambda IR. + (Florian Angeletti, report by Nathanaëlle Courant, review by Gabriel Scherer) + ### Standard library: +- #14974 : Add `Sys.filepath_exists` and improve documentation + for `Sys.file_exists` + (Khalid Belkassmi E.H., review by Kate Deplaix, Nicolás Ojeda Bär, + Xavier Leroy and Daniel Bünzli) + - #14941, #13937: Add `{Option,Result}.try_value` (Michael Neumann, review by Daniel Bünzli, David Allsopp) @@ -275,18 +351,52 @@ Working version (Nicolás Ojeda Bär, suggestion by Andreas Rossberg, review by Daniel Bünzli, Léo Andrès, and Olivier Nicole) +- #15026: Fix report #14765 of an uncaught exception when flushing formatters + at program exit. + (Olivier Nicole, report by Olivier Andrieu, review by Gabriel Scherer) + +- #14981: Add Uchar.{is_ascii,ascii_to_char,is_latin1,latin1_to_char} and + tweak the documentation of Uchar.of_char. + (Fabian Hemmer, suggestion by Daniel Bünzli, review by Daniel Bünzli and + Nicolás Ojeda Bär) + +- #15009: Improve Set.union, Set.inter, and Set.diff on physically shared sets, + avoiding unnecessary traversal and allocations and preserving sharing when the + result is unchanged. + (Nicolás Ojeda Bär, review by Vincent Laviron and Olivier Nicole) + ### Other libraries: +- #14740: Various fixes in libunix. Fix compilation failures if gethostname or + IPv6 are not available. Add blocking sections to the wrappers of realpath and + lockf. Fix missing root registration. + (Antonin Décimo, review by Gabriel Scherer) + +- #14764: Fix a bug in the Win32 implementation of the `Unix` library that could + result in some file descriptors being dropped from the result of `Unix.select` + under certain circumstances. + (Zhang Rui, review by Nicolás Ojeda Bär, Antonin Décimo and David Allsopp) + * #14788: The Win32 error code `ERROR_DIRECTORY` (= 267) is now mapped to `ENOTDIR` instead of `EUNKNOWNERR(-267)` when raised by functions in the `Unix` module (eg `Unix.opendir`). (Nicolás Ojeda Bär, report by Adrián Montesinos González, review by Gabriel Scherer) -- #14764: Fix a bug in the Win32 implementation of the `Unix` library that could - result in some file descriptors being dropped from the result of `Unix.select` - under certain circumstances. - (Zhang Rui, review by Nicolás Ojeda Bär, Antonin Décimo and David Allsopp) +- #14984: Cache one write buffer for each domain in + `Runtime_events.User.write`, instead of a list for each thread. A write of + a custom event does not allocate in the usual single-threaded case. + (Anil Madhavapeddy, review by Thomas Leonard and Sadiq Jaffer) + +- #15025: Fix two bugs in the Win32 version of `Unix.select` that could result + in failure or incorrect results being returned when the same file descriptor + appeared more than one input list or more than once in a single input list. + (Nicolás Ojeda Bär, report by Zhang Rui, review by Antonin Décimo) + +- #15044: `Unix.realpath`: On Windows, improve normalization of UNC paths. For + example, `\\?\UNC\server\share` is now mapped to `\\server\share` rather than + `UNC\server\share`. + (Nicolás Ojeda Bär, review by David Allsopp and Antonin Décimo) ### Tools: @@ -428,6 +538,9 @@ Working version - #14946: Keep the continuation inside the typedtree using a dedicated type. (Xavier Van de Woestyne, review by Florian Angeletti) +- #15023: Extract Utf8_lexeme out of Misc into utils/utf8_lexeme.ml(i) + (Thomas Refis, review by Nicolás Ojeda Bär) + ### Build system: - #14552: Export `AR` and `ARFLAGS` in Makefile.config. @@ -440,6 +553,18 @@ Working version ### Bug fixes: +- #14986: Take effect cases into account in the expansiveness check. + (Jeremy Yallop, review by Florian Angeletti) + +- #15021: On POWER, fix assembler errors from frame-management code when the + frame size exceeds a signed 16-bit displacement, by routing the affected + sequences through range-checked helpers. + (Tim McGilchrist, review by Miod Vallat and Zane Hambly) + +- #14993: the let-rec check should give generic arrays dynamic size, + since floats and addresses have different sizes on 32-bit systems. + (Jeremy Yallop, review by Vincent Laviron) + - #13335: Fix infinite loop in runtime_events.c's write_to_ring when an event is larger than the configured ring buffer. Only really comes up if you run the instrumented runtime with a small OCAMLRUNPARAM=e= setting @@ -497,12 +622,43 @@ Working version - #14890, fix pattern compilation in presence of the [min_int] constant pattern (Florian Angeletti, review by Luc Maranget) +* #14982: Remove assumption that abstract types defined in the current + module are injective and contractive + (Jeremy Yallop, review by Jacques Garrigue) + +- #14999, #15000: Fix integer overflow in the runtime_events ring buffer size + computation. With OCAMLRUNPARAM=e=21 or higher the ring file was created + undersized and custom event registration wrote through a truncated offset. + (Tim McGilchrist, review by Xavier Leroy and Sadiq Jaffer) + +- #14966: add the missing EV_MINOR_EPHE_CLEAN constructor to + Runtime_events.runtime_phase, introduced in #13643. The runtime has emitted + this phase since 5.4, when a minor collection has to clean locked ephemerons, + but the OCaml type had no constructor for it, so consumers were handed an + out-of-range value and crashed when matching on it. + (Tim McGilchrist, review by Florian Angeletti) + +- #14969: Fix the units of the runtime events counter EV_C_MINOR_ALLOCATED_WORDS + to report as the number of words of minor heap consumed, including headers. + (Tim McGilchrist, review by Nicolás Ojeda Bär) + +- #15016, #14151: Fix spurious "Runtime_events: corrupt stream" failures when a + consumer falls behind the producer. The consumer now reports an overwritten + ring slot as lost events rather than corruption, and write_to_ring publishes + the ring head advance before overwriting the slots that advance releases. + (Tim McGilchrist, reported by mattiasdrp, review by Sadiq Jaffer and + Zane Hambly) + +* #14978: fix precedence of `with module type` construct in order to parse + `T with module type S = X -> X` as `T with module type S = (X -> X)` + (Pieter Goetschalckx, review by Gabriel Scherer and Florian Angeletti) + OCaml 5.5.1 ----------- ### Bug fixes: -- #14891, #14982: fix scope error leading to an erroneous typechecking for +- #14891, #14892: fix scope error leading to an erroneous typechecking for non-dependent application of module-dependent function in presence of dependent first-class module types: ```ocaml @@ -526,6 +682,20 @@ OCaml 5.5.1 of the internal cache of stacks. (Vesa Karvonen, Florian Angeletti, review by Gabriel Scherer) +- #14989: Improve build reproducibility by letting only otherlibs/{str,unix} + build their own .cmi and .cmx. The generic %.cmi/%.cmx rules of the root + Makefile were racing with them under make -j and recorded a different source + path, which changed the interface digest (and, through it, most other compiled + artefacts) as well as the debug info packed into str.a and unix.a. + (Bernhard M. Wiedemann, review by David Allsopp and Stefan Muenzel) + +- #15029: Fix a regression on Windows where an OCaml thread that never + yielded voluntarily would keep the runtime lock forever, so that the other + threads of its domain never ran. Preemptive switching between systhreads had + no effect; only explicit calls to `Thread.yield` or blocking sections would + let other threads run. + (Nicolás Ojeda Bär, report by Daniel Larraz, review by Antonin Décimo) + OCaml 5.5.0 (19 June 2026) ------------------------- diff --git a/HACKING.adoc b/HACKING.adoc index 49d165dbfbc3..4b777e951af9 100644 --- a/HACKING.adoc +++ b/HACKING.adoc @@ -330,90 +330,12 @@ working on the compiler to using the compiler. The basic way to do this is to run `opam install .` again, but this will recompile the compiler from scratch and also trigger a recompilation of all the packages in the switch. -===== Using `opam-custom-install` - -The `opam-custom-install` plugin allows you to install a package using a custom -command instead of the package-supplied one. It can be installed following -instructions https://gitlab.ocamlpro.com/louis/opam-custom-install[here]. - -In our case, we need to build the compiler, and when we've built everything -that we need then we run `opam custom-install ocaml-variants -- make install`. -This will make opam remove the previously installed version of the compiler -(if any), then install the new one in its stead. - -[source,sh] ------ -# reinstall the compiler, and rebuild all opam packages -opam custom-install ocaml-variants -- make install ------ - -Since most opam packages depend on the compiler, this will trigger a -reinstallation of all the packages in the switch. -If you want to avoid that (for instance, your patch only adds some logging -so you expect the core libraries and all the already compiled packages to be -identical), you can use the additional `--no-recompilations` flag. -There are no checks that it's safe to do so, so if your patch ends up -changing even slightly one of the core libraries' files, you will likely -get inconsistent assumptions errors later. - -[source,sh] ------ -# reinstall the compiler, leaving the opam packages untouched -- unsafe! -opam custom-install --no-recompilations ocaml-variants -- make install ------ - -Note about the first installation: -When you start from an empty switch, and install a compiler (in our case, -the `ocaml-variants` package provided by the compiler's opam file), then -a number of additional packages are installed to ensure that the switch -will work correctly. Mainly, the `ocaml` package needs to be installed, -and while it's done automatically when using regular opam commands, the -`custom-install` plugin will not force installation of dependencies. -Moreover, if you try to fix the problem by manually installing the `ocaml` -package, opam will try to recompile `ocaml-variants`, using the default -instructions. You can get around this by running -`opam reinstall --forget-pending` just after the `opam custom-install` command -and just before the `opam install ocaml command`. -Full example: - -[source,sh] ------ -opam switch create . --empty -./configure --prefix=$(opam var prefix) --disable-ocamldoc --disable-ocamltest -make world && make opt -opam custom-install ocaml-variants -- make install -opam reinstall --forget-pending --yes -opam install ocaml -# You now have a working switch, in which you can start installing packages ------ - -One advantage of this plugin over a plain `make install` is that it -correctly tracks the files associated with the compiler, so if your -`make install` command only installs the bytecode versions of the tools, -then with `opam-custom-install` you will end up in a state where only the -bytecode tools are installed, whereas with a raw `make install` you will have -stale native binaries remaining in your switch. -Since it's significantly faster to build the bytecode version of the tools, -and many opam packages will pick the native version of the compilers if -present and the bytecode version otherwise, you can build your initial switch -with the native versions (to get quickly to a state where a bug appears), -then clean your working directory and start building bytecode tools only -for the actual debugging phase. - -===== Without `opam-custom-install` - -You can achieve some improvements using built-in opam commands. - +You can achieve some improvements using built-in opam commands: Using `opam install . --assume-built` will simply remove the package for the compiler, then run the installation instructions (`make install`) in the working directory, tracking the installed files -correctly. The main difference with the `opam-custom-install` version -is that there's no way to prevent this command from triggering a full -recompilation of your switch. +correctly. -You can also run `make install` manually, which will not trigger a -recompilation, but will not remove the previous version either and can -mess with opam's tracking of installed files. === Useful Makefile targets and options @@ -617,7 +539,7 @@ The `configure` script may be regenerated by running `tools/autogen`, with GNU Autoconf installed. If you're using a version of GNU Autoconf that differs from our CI, -then the generated `configure` script might differ too. Ubuntu 24.04 +then the generated `configure` script might differ too. Ubuntu 26.04 LTS packages may be used as a reasonable base to generate this file. Using a Docker image with GNU Autoconf installed, and `git rebase --exec`, one can properly regenerate the `configure` @@ -627,7 +549,7 @@ script for each commit in a branch. ---- docker build -t ocaml-make-configure:latest - <<'EOF' # syntax=docker/dockerfile:1 -FROM ubuntu:24.04 +FROM ubuntu:26.04 RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ @@ -635,7 +557,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ WORKDIR /mnt ENTRYPOINT ["tools/autogen"] EOF -git rebase trunk --exec "docker run --rm -it -v $PWD:/mnt ocaml-make-configure:latest" +git rebase trunk --exec "docker run --rm --user $(id -u):$(id -g) -it -v $PWD:/mnt ocaml-make-configure:latest" ---- ==== GitHub's Continuous Integration: GitHub Actions and AppVeyor diff --git a/Makefile b/Makefile index 42ee03e06bf3..86804aab2c9c 100644 --- a/Makefile +++ b/Makefile @@ -64,6 +64,7 @@ utils_SOURCES = $(addprefix utils/, \ config.mli config.ml \ build_path_prefix_map.mli build_path_prefix_map.ml \ format_doc.mli format_doc.ml \ + utf8_lexeme.mli utf8_lexeme.ml \ misc.mli misc.ml \ identifiable.mli identifiable.ml \ numbers.mli numbers.ml \ @@ -2260,6 +2261,12 @@ ocamldebug_LIBRARIES = compilerlibs/ocamlcommon \ otherlibs/unix/unix.cma: otherlibraries otherlibs/str/str.cma: otherlibraries +# Root-directory targets depend on these .cmi/.cmx via .depend. The empty +# recipes keep the generic %.cmi/%.cmx rules from racing with the otherlibs +# sub-make, which records a different source path and digest in the artefacts. +otherlibs/unix/unix.cmi otherlibs/str/str.cmi: otherlibraries ; +otherlibs/unix/unix.cmx otherlibs/str/str.cmx: otherlibrariesopt ; + debugger/%: VPATH += otherlibs/unix otherlibs/dynlink ocamldebug_COMPILER_SOURCES = $(addprefix toplevel/, \ @@ -2464,6 +2471,7 @@ ocamlprof_SOURCES = \ config.mli config.ml \ build_path_prefix_map.mli build_path_prefix_map.ml \ format_doc.mli format_doc.ml \ + utf8_lexeme.mli utf8_lexeme.ml \ misc.mli misc.ml \ identifiable.mli identifiable.ml \ numbers.mli numbers.ml \ @@ -2491,6 +2499,7 @@ ocamlcp_ocamloptp_SOURCES = \ config.mli config.ml \ build_path_prefix_map.mli build_path_prefix_map.ml \ format_doc.mli format_doc.ml \ + utf8_lexeme.mli utf8_lexeme.ml \ misc.mli misc.ml \ warnings.mli warnings.ml \ identifiable.mli identifiable.ml \ @@ -2519,6 +2528,7 @@ ocamlmklib_SOURCES = \ config.ml \ build_path_prefix_map.ml \ format_doc.ml \ + utf8_lexeme.ml \ misc.ml \ ocamlmklib.mli ocamlmklib.ml @@ -2529,6 +2539,7 @@ ocamlmktop_SOURCES = \ config.mli config.ml \ build_path_prefix_map.mli build_path_prefix_map.ml \ format_doc.mli format_doc.ml \ + utf8_lexeme.mli utf8_lexeme.ml \ misc.mli misc.ml \ identifiable.mli identifiable.ml \ numbers.mli numbers.ml \ diff --git a/README.adoc b/README.adoc index 4c3920a8ddc3..d3005501c38a 100644 --- a/README.adoc +++ b/README.adoc @@ -142,7 +142,10 @@ https://github.com/ocaml/ocaml/issues To be effective, bug reports should include a complete program (preferably small) that exhibits the unexpected behavior, and the configuration you are -using (machine type, etc). +using (machine type, etc), it is also preferable to avoid adding +LLM-generated contents or explanation to your bug report, see +link:AI.md#guidelines-relevant-to-ai-assisted-bug-reports[AI.md] for a more +in-depth explanation. == Contributing diff --git a/asmcomp/arm64/arch.ml b/asmcomp/arm64/arch.ml index 75219fa8c1c2..28016dad913d 100644 --- a/asmcomp/arm64/arch.ml +++ b/asmcomp/arm64/arch.ml @@ -87,6 +87,7 @@ type specific_operation = | Imulsubf (* floating-point multiply and subtract *) | Inegmulsubf (* floating-point negate, multiply and subtract *) | Isqrtf (* floating-point square root *) + | Iroundf of float_rounding (* floating-point round to integer *) | Ibswap of int (* endianness conversion *) | Imove32 (* 32-bit integer move *) | Isignext of int (* sign extension *) @@ -95,6 +96,12 @@ and arith_operation = Ishiftadd | Ishiftsub +and float_rounding = + Rnearest_away (* to nearest, ties away from zero *) + | Rtoward_zero + | Rtoward_pos (* toward positive infinity *) + | Rtoward_neg (* toward negative infinity *) + (* Sizes, endianness *) let big_endian = false @@ -193,6 +200,14 @@ let print_specific_operation printreg op ppf arg = | Isqrtf -> fprintf ppf "sqrtf %a" printreg arg.(0) + | Iroundf r -> + let name = match r with + | Rnearest_away -> "roundf" + | Rtoward_zero -> "truncf" + | Rtoward_pos -> "ceilf" + | Rtoward_neg -> "floorf" in + fprintf ppf "%s %a" name + printreg arg.(0) | Ibswap n -> fprintf ppf "bswap%i %a" n printreg arg.(0) diff --git a/asmcomp/arm64/arch.mli b/asmcomp/arm64/arch.mli index 848ae96fec83..8b4d0d1cd4a8 100644 --- a/asmcomp/arm64/arch.mli +++ b/asmcomp/arm64/arch.mli @@ -66,6 +66,7 @@ type specific_operation = | Imulsubf (* floating-point multiply and subtract *) | Inegmulsubf (* floating-point negate, multiply and subtract *) | Isqrtf (* floating-point square root *) + | Iroundf of float_rounding (* floating-point round to integer *) | Ibswap of int (* endianness conversion *) | Imove32 (* 32-bit integer move *) | Isignext of int (* sign extension *) @@ -74,6 +75,12 @@ and arith_operation = Ishiftadd | Ishiftsub +and float_rounding = + Rnearest_away (* to nearest, ties away from zero *) + | Rtoward_zero + | Rtoward_pos (* toward positive infinity *) + | Rtoward_neg (* toward negative infinity *) + (* Sizes, endianness *) val big_endian : bool diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index d280c6d7f97a..f5bafe57ba79 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -531,7 +531,8 @@ module Size = struct | Lop (Iintop_imm ((Iadd|Isub), n)) -> addsub_size n | Lop (Iintop _) -> 1 | Lop (Iintop_imm _) -> 1 - | Lop (Ifloatofint | Iintoffloat | Iabsf | Inegf | Ispecific Isqrtf) -> 1 + | Lop (Ifloatofint | Iintoffloat | Iabsf | Inegf + | Ispecific (Isqrtf | Iroundf _)) -> 1 | Lop (Iaddf | Isubf | Imulf | Idivf | Ispecific Inegmulf) -> 1 | Lop (Iopaque) -> 0 | Lop (Ispecific (Imuladdf | Inegmuladdf | Imulsubf | Inegmulsubf)) -> 1 @@ -979,13 +980,18 @@ let emit_instr env i = | Lop(Iintop_imm(op, n)) -> let instr = name_for_int_operation op in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, #{emit_int n}\n` - | Lop(Ifloatofint | Iintoffloat | Iabsf | Inegf | Ispecific Isqrtf as op) -> + | Lop(Ifloatofint | Iintoffloat | Iabsf | Inegf + | Ispecific (Isqrtf | Iroundf _) as op) -> let instr = (match op with | Ifloatofint -> "scvtf" | Iintoffloat -> "fcvtzs" | Iabsf -> "fabs" | Inegf -> "fneg" | Ispecific Isqrtf -> "fsqrt" + | Ispecific (Iroundf Rnearest_away) -> "frinta" + | Ispecific (Iroundf Rtoward_zero) -> "frintz" + | Ispecific (Iroundf Rtoward_pos) -> "frintp" + | Ispecific (Iroundf Rtoward_neg) -> "frintm" | _ -> assert false) in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` | Lop(Iaddf | Isubf | Imulf | Idivf | Ispecific Inegmulf as op) -> diff --git a/asmcomp/arm64/selection.ml b/asmcomp/arm64/selection.ml index de517258d9b4..da4a19bb3566 100644 --- a/asmcomp/arm64/selection.ml +++ b/asmcomp/arm64/selection.ml @@ -48,8 +48,9 @@ let is_immediate n = (* If you update [inline_ops], you may need to update [is_simple_expr] and/or [effects_of], below. *) let inline_ops = - [ "sqrt"; "caml_bswap16_direct"; "caml_int32_direct_bswap"; - "caml_int64_direct_bswap"; "caml_nativeint_direct_bswap" ] + [ "sqrt"; "caml_bswap16_direct"; "caml_fma"; "caml_int32_direct_bswap"; + "caml_int64_direct_bswap"; "caml_nativeint_direct_bswap"; + "caml_round"; "caml_trunc"; "ceil"; "floor" ] let use_direct_addressing _symb = (not !Clflags.dlcode) && (not Arch.macosx) @@ -200,6 +201,23 @@ method! select_operation op args dbg = (* Recognize floating-point square root *) | Cextcall("sqrt", _, _, _) -> (Ispecific Isqrtf, args) + (* Only the unboxed [Float.fma] passes floats in registers, hence the + argument types. *) + | Cextcall("caml_fma", _, [XFloat; XFloat; XFloat], false) -> + begin match args with + | [arg1; arg2; arg3] -> (Ispecific Imuladdf, [arg3; arg1; arg2]) + | _ -> super#select_operation op args dbg + end + (* Only the unboxed rounding externals pass their argument in a + register, hence the argument type. *) + | Cextcall("caml_round", _, [XFloat], false) -> + (Ispecific (Iroundf Rnearest_away), args) + | Cextcall("caml_trunc", _, [XFloat], false) -> + (Ispecific (Iroundf Rtoward_zero), args) + | Cextcall("ceil", _, [XFloat], false) -> + (Ispecific (Iroundf Rtoward_pos), args) + | Cextcall("floor", _, [XFloat], false) -> + (Ispecific (Iroundf Rtoward_neg), args) (* Recognize bswap instructions *) | Cextcall("caml_bswap16_direct", _, _, _) -> (Ispecific(Ibswap 16), args) diff --git a/asmcomp/emitaux.ml b/asmcomp/emitaux.ml index 7ab281549ca9..21000ff49658 100644 --- a/asmcomp/emitaux.ml +++ b/asmcomp/emitaux.ml @@ -442,6 +442,22 @@ let cfi_val_offset ~reg ~offset = emit_string "\n" end +(* Emit a DWARF CFI expression of the form CFA = *(reg + offset), i.e. + follow a pointer stored at [reg + offset]. Used by backends (POWER) + where the canonical frame address lives behind a back-chain link. + The expression is 3 bytes: DW_OP_breg+reg, sleb128(offset), DW_OP_deref; + [offset] must fit in a single-byte SLEB128 (-64..63). *) +let cfi_def_cfa_breg_deref ~reg ~offset = + assert (-64 <= offset && offset < 64); + if is_cfi_enabled () then begin + (* DW_CFA_def_cfa_expression, length=3 *) + emit_string "\t.cfi_escape 0x0f, 3, "; + emit_int (0x70 + reg); (* DW_OP_breg + reg *) + emit_string ", "; + emit_int offset; + emit_string ", 0x06\n" (* DW_OP_deref *) + end + (* Emit debug information *) (* This assoc list is expected to be very short *) diff --git a/asmcomp/emitaux.mli b/asmcomp/emitaux.mli index 79890f00eb78..61693d24f3b2 100644 --- a/asmcomp/emitaux.mli +++ b/asmcomp/emitaux.mli @@ -88,6 +88,9 @@ val cfi_remember_state : unit -> unit val cfi_restore_state : unit -> unit val cfi_def_cfa_register: reg:int -> unit val cfi_val_offset: reg:int -> offset:int -> unit +val cfi_def_cfa_breg_deref: reg:int -> offset:int -> unit +(** [.cfi_escape] for CFA = *(reg + offset). [offset] must fit in a + single-byte SLEB128 (-64..63). *) val binary_backend_available: bool ref (** Is a binary backend available. If yes, we don't need diff --git a/asmcomp/power/CSE.ml b/asmcomp/power/CSE.ml index c40bc4b42b0f..52ab8228504d 100644 --- a/asmcomp/power/CSE.ml +++ b/asmcomp/power/CSE.ml @@ -26,7 +26,7 @@ inherit cse_generic as super method! class_of_operation op = match op with - | Ispecific(Imultaddf | Imultsubf) -> Op_pure + | Ispecific(Imultaddf | Imultsubf | Isqrtf | Iroundf _) -> Op_pure | Ispecific(Ialloc_far _) | Ispecific(Ipoll_far _) -> Op_other | _ -> super#class_of_operation op diff --git a/asmcomp/power/arch.ml b/asmcomp/power/arch.ml index 9d0666932310..60a7e6ec2ec2 100644 --- a/asmcomp/power/arch.ml +++ b/asmcomp/power/arch.ml @@ -30,6 +30,8 @@ let command_line_options = [] type specific_operation = Imultaddf (* multiply and add *) | Imultsubf (* multiply and subtract *) + | Isqrtf (* floating-point square root *) + | Iroundf of float_rounding (* round to integer *) | Ialloc_far of (* allocation in large functions *) { bytes : int; dbginfo : Debuginfo.alloc_dbginfo } | Ipoll_far of { return_label : cmm_label option } @@ -38,6 +40,12 @@ type specific_operation = | Icheckbound_imm_far of int (* bounds check in large functions, constant 2nd arg (the index) *) +and float_rounding = + Rnearest_away (* to nearest, ties away from zero *) + | Rtoward_zero + | Rtoward_pos (* toward positive infinity *) + | Rtoward_neg (* toward negative infinity *) + (* Addressing modes *) type addressing_mode = @@ -93,6 +101,15 @@ let print_specific_operation printreg op ppf arg = | Imultsubf -> fprintf ppf "%a *f %a -f %a" printreg arg.(0) printreg arg.(1) printreg arg.(2) + | Isqrtf -> + fprintf ppf "sqrtf %a" printreg arg.(0) + | Iroundf r -> + let name = match r with + | Rnearest_away -> "roundf" + | Rtoward_zero -> "truncf" + | Rtoward_pos -> "ceilf" + | Rtoward_neg -> "floorf" in + fprintf ppf "%s %a" name printreg arg.(0) | Ialloc_far { bytes; _ } -> fprintf ppf "alloc_far %d" bytes | Ipoll_far _ -> diff --git a/asmcomp/power/arch.mli b/asmcomp/power/arch.mli index 031b86dc20ab..ceaf9a48e06e 100644 --- a/asmcomp/power/arch.mli +++ b/asmcomp/power/arch.mli @@ -28,6 +28,8 @@ val command_line_options : (string * Arg.spec * string) list type specific_operation = Imultaddf (* multiply and add *) | Imultsubf (* multiply and subtract *) + | Isqrtf (* floating-point square root *) + | Iroundf of float_rounding (* round to integer *) | Ialloc_far of (* allocation in large functions *) { bytes : int; dbginfo : Debuginfo.alloc_dbginfo } | Ipoll_far of { return_label : cmm_label option } @@ -35,6 +37,12 @@ type specific_operation = | Icheckbound_far (* bounds check in large functions *) | Icheckbound_imm_far of int (* bounds check in large functions *) +and float_rounding = + Rnearest_away (* to nearest, ties away from zero *) + | Rtoward_zero + | Rtoward_pos (* toward positive infinity *) + | Rtoward_neg (* toward negative infinity *) + (* Addressing modes *) type addressing_mode = diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index 92037d496ab7..bf927c68fc11 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -24,6 +24,8 @@ open Linear open Emitaux open Emitenv +let fp = Config.with_frame_pointers + (* Reserved space at bottom of stack *) let reserved_stack_space = 32 @@ -34,10 +36,17 @@ let initial_stack_offset f = if f.fun_frame_required then reserved_stack_space + (* Including the return address *) size_int * f.fun_num_stack_slots.(0) + (* Local int variables *) - size_float * f.fun_num_stack_slots.(1) (* Local float variables *) + size_float * f.fun_num_stack_slots.(1) + (* Local float variables *) + (if fp then size_int else 0) (* Saved frame pointer r31 *) else 0 +(* Offset where frame pointer r31 is saved, relative to SP after prologue *) +let fp_save_offset env = + reserved_stack_space + env.stack_offset + + env.f.fun_num_stack_slots.(1) * size_float + + env.f.fun_num_stack_slots.(0) * size_int + let frame_size env = let size = env.stack_offset + (* Trap frame, outgoing parameters *) @@ -61,7 +70,20 @@ let retaddr_offset env = frame_size env + 16 let toc_save_offset env = frame_size env + 8 -let trap_size = 16 +(* Upper bound on the r1-relative displacements emitted for [f]: the deepest + frame, plus the linkage and incoming-argument areas above it. *) +let max_frame_offset f = + let incoming = + Reg.Set.fold + (fun r ofs -> match r.loc with Stack (Incoming n) -> max ofs n | _ -> ofs) + f.fun_args 0 in + Misc.align (initial_stack_offset f) 16 + + f.fun_extra_stack_used + 2 * reserved_stack_space + incoming + 16 + +(* Trap frame size. With frame pointers [Lpushtrap] uses [stdu] and the trap + data lives inside the new frame (32 + 16); otherwise 16 bytes suffice. + Must match [Stackframe.trap_handler_size]. *) +let trap_size = if fp then 48 else 16 (* Output a label *) @@ -95,18 +117,6 @@ let emit_reg r = | Reg r -> emit_string (register_name r) | _ -> Misc.fatal_error "Emit.emit_reg" -(* Output a stack reference *) - -let emit_stack env r = - match r.loc with - | Stack (Domainstate n) -> - let ofs = n + Domainstate.(idx_of_field Domain_extra_params) * 8 in - `{emit_int ofs}(30)` - | Stack s -> - let ofs = slot_offset env s (register_class r) in - `{emit_int ofs}(1)` - | _ -> Misc.fatal_error "Emit.emit_stack" - (* Split a 32-bit integer constants in two 16-bit halves *) let low_high_u n = (n land 0xFFFF, n asr 16) @@ -228,6 +238,67 @@ let emit_load_store instr addressing_mode addr n arg = | Iindexed2 -> ` {emit_string instr}x {emit_reg arg}, {emit_reg addr.(n)}, {emit_reg addr.(n+1)}\n` +(* Frame-management offsets can exceed a signed 16-bit displacement. These + helpers fall back to a longer sequence, using the non-allocatable temporaries + r11/r12. Offsets are multiples of 8, so a split low half stays DS-valid. *) + +(* [reg <- n], reg <> 0 *) +let emit_li reg n = + if is_immediate n then + ` li {emit_gpr reg}, {emit_int n}\n` + else begin + let (lo, hi) = low_high_s n in + ` addis {emit_gpr reg}, 0, {emit_int hi}\n`; + if lo <> 0 then + ` addi {emit_gpr reg}, {emit_gpr reg}, {emit_int lo}\n` + end + +(* [reg <- reg + n], reg <> 0 *) +let emit_addi_inplace reg n = + if is_immediate n then begin + if n <> 0 then + ` addi {emit_gpr reg}, {emit_gpr reg}, {emit_int n}\n` + end else begin + let (lo, hi) = low_high_s n in + ` addis {emit_gpr reg}, {emit_gpr reg}, {emit_int hi}\n`; + if lo <> 0 then + ` addi {emit_gpr reg}, {emit_gpr reg}, {emit_int lo}\n` + end + +(* "instr datareg, ofs(1)". The long form computes the address in [tmp], a GPR + other than 0 and 1, so stores need [datareg] <> [tmp]. [ofs] must be + 4-aligned, as the split preserves [ofs] mod 4 without re-checking it. *) +let emit_sp_mem instr emit_data datareg ofs tmp = + if is_immediate ofs && valid_offset instr ofs then + ` {emit_string instr} {emit_data datareg}, {emit_int ofs}(1)\n` + else begin + let (lo, hi) = low_high_s ofs in + assert (valid_offset instr lo); + ` addis {emit_gpr tmp}, 1, {emit_int hi}\n`; + ` {emit_string instr} {emit_data datareg}, {emit_int lo}({emit_gpr tmp})\n` + end + +(* Spill/reload [valreg] via the slot [memreg]. Long form clobbers [tmp] *) +let emit_reg_stack instr env valreg memreg tmp = + match memreg.loc with + | Stack (Domainstate n) -> + let ofs = n + Domainstate.(idx_of_field Domain_extra_params) * 8 in + ` {emit_string instr} {emit_reg valreg}, {emit_int ofs}(30)\n` + | Stack s -> + let ofs = slot_offset env s (register_class memreg) in + emit_sp_mem instr emit_reg valreg ofs tmp + | _ -> Misc.fatal_error "Emit.emit_reg_stack" + +(* Push an [n]-byte frame keeping the back chain, like "stdu 1, -n(1)". + The long form clobbers r12. *) +let emit_frame_push n = + if is_immediate (-n) then + ` stdu 1, {emit_int (-n)}(1)\n` + else begin + emit_li 12 (-n); + ` stdux 1, 1, 12\n` + end + (* After a comparison, extract the result as 0 or 1 *) let emit_extract_crbit bitnum negated res = @@ -270,8 +341,12 @@ let emit_float_comp cmp arg = let emit_free_frame env = let n = frame_size env in - if n > 0 then - ` addi 1, 1, {emit_int n}\n` + if n > 0 then begin + (* Restore frame pointer before deallocating frame *) + if fp && env.f.fun_frame_required then + emit_sp_mem "ld" emit_gpr 31 (fp_save_offset env) 31; + emit_addi_inplace 1 n + end (* Emit a "bl" instruction to a given symbol *) @@ -286,7 +361,7 @@ let emit_call_nop () = (* Reload the TOC register r2 from the value saved on the stack *) let emit_reload_toc env = - ` ld 2, {emit_int (toc_save_offset env)}(1)\n` + emit_sp_mem "ld" emit_gpr 2 (toc_save_offset env) 2 (* Adjust stack_offset and emit corresponding CFI directive *) @@ -400,8 +475,13 @@ module BR = Branch_relaxation.Make (struct let offset_pc_at_branch = 1 + let large_frame f = not (is_immediate (max_frame_offset f)) + let prologue_size f = - if f.fun_frame_required then 4 else 0 + if f.fun_frame_required then + if large_frame f then (if fp then 9 else 5) + else 4 + (if fp then 2 else 0) (* +2 for save old FP and set FP = SP *) + else 0 let tocload_size = 2 @@ -418,10 +498,15 @@ module BR = Branch_relaxation.Make (struct end | Iindexed2 -> 1 - let instr_size f = function + (* Budget the longer out-of-range forms. Over-estimating is safe *) + let instr_size f = + let large = large_frame f in + let if_large n = if large then n else 0 in + let fp_save = if fp && f.fun_frame_required then 1 else 0 in + function | Lend -> 0 | Lprologue -> prologue_size f - | Lop(Imove | Ispill | Ireload) -> 1 + | Lop(Imove | Ispill | Ireload) -> 1 + if_large 1 | Lop(Iconst_int n) -> if is_native_immediate n then 1 else if (let (_lo, hi) = native_low_high_s n in @@ -431,18 +516,20 @@ module BR = Branch_relaxation.Make (struct else tocload_size | Lop(Iconst_float _) -> tocload_size | Lop(Iconst_symbol _) -> tocload_size - | Lop(Icall_ind) -> 4 - | Lop(Icall_imm _) -> 3 - | Lop(Itailcall_ind) -> 6 + | Lop(Icall_ind) -> 4 + if_large 1 + | Lop(Icall_imm _) -> 3 + if_large 1 + | Lop(Itailcall_ind) -> 6 + fp_save + if_large 3 | Lop(Itailcall_imm { func; _ }) -> if func = f.fun_name then 1 - else 6 + tocload_size + else 6 + tocload_size + fp_save + if_large 3 | Lop(Iextcall { alloc; stack_ofs; _}) -> - if stack_ofs > 0 then tocload_size + 4 + if stack_ofs > 0 + then tocload_size + 4 + (if is_immediate stack_ofs then 0 else 1) else if alloc then tocload_size + 2 - else 5 - | Lop(Istackoffset _) -> 1 + else 5 + (if fp then 3 else 0) (* ld+stdu+addi for fp support *) + | Lop(Istackoffset n) -> + if fp && n > 0 then 3 + if_large 4 else 1 + if_large 1 | Lop(Iload {memory_chunk; addressing_mode; is_atomic }) -> let loadinstr = load_mnemonic memory_chunk in (if is_atomic then 4 else 0) + @@ -476,9 +563,9 @@ module BR = Branch_relaxation.Make (struct | Lop(Ispecific _) -> 1 | Lop(Idls_get) -> 1 | Lop(Iatomic_fetch_add) -> 7 - | Lop(Ireturn_addr) -> 1 - | Lreloadretaddr -> 2 - | Lreturn -> 2 + | Lop(Ireturn_addr) -> if f.fun_frame_required then 1 + if_large 1 else 1 + | Lreloadretaddr -> 2 + if_large 1 + | Lreturn -> 2 + fp_save + if_large (1 + fp_save) | Llabel _ -> 0 | Lbranch _ -> 1 | Lcondbranch (Ifloattest(CFle | CFnle | CFge | CFnge), _) -> 3 @@ -488,9 +575,9 @@ module BR = Branch_relaxation.Make (struct + (if lbl1 = None then 0 else 1) + (if lbl2 = None then 0 else 1) | Lswitch _ -> 7 + tocload_size - | Lentertrap -> 1 + | Lentertrap -> 1 + fp_save + if_large 1 | Ladjust_trap_depth _ -> 0 - | Lpushtrap _ -> 4 + tocload_size + | Lpushtrap _ -> (if fp then 6 else 4) + tocload_size | Lpoptrap -> 2 | Lraise (Lambda.Raise_regular | Lambda.Raise_reraise) -> 2 | Lraise Lambda.Raise_notrace -> 5 @@ -518,25 +605,25 @@ let emit_alloc env i bytes dbginfo far = if env.call_gc_label = 0 then env.call_gc_label <- new_label (); let offset = Domainstate.(idx_of_field Domain_young_limit) * 8 in ` ld 0, {emit_int offset}(30)\n`; - ` addi 31, 31, {emit_int(-bytes)}\n`; - ` cmpld 31, 0\n`; + ` addi 23, 23, {emit_int(-bytes)}\n`; + ` cmpld 23, 0\n`; if not far then begin ` bltl- {emit_label env.call_gc_label}\n`; record_frame env i.live (Dbg_alloc dbginfo); - ` addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n` + ` addi {emit_reg i.res.(0)}, 23, {emit_int size_addr}\n` end else begin let lbl = new_label() in ` bge+ {emit_label lbl}\n`; ` bl {emit_label env.call_gc_label}\n`; record_frame env i.live (Dbg_alloc dbginfo); - `{emit_label lbl}: addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n` + `{emit_label lbl}: addi {emit_reg i.res.(0)}, 23, {emit_int size_addr}\n` end let emit_poll env i return_label far = if env.call_gc_label = 0 then env.call_gc_label <- new_label (); let offset = Domainstate.(idx_of_field Domain_young_limit) * 8 in ` ld 0, {emit_int offset}(30)\n`; - ` cmpld 31, 0\n`; + ` cmpld 23, 0\n`; if not far then begin begin match return_label with | None -> @@ -604,10 +691,22 @@ let emit_instr env i = ` std 0, {emit_int 16}(1)\n`; ` std 2, {emit_int 8}(1)\n`; cfi_offset ~reg: 65 (* LR *) ~offset: 16; + if fp then + emit_sp_mem "std" emit_gpr 31 (fp_save_offset env - n) 12 end; if n > 0 then begin - ` addi 1, 1, {emit_int(-n)}\n`; - cfi_adjust_cfa_offset n + if fp then + emit_frame_push n + else + emit_addi_inplace 1 (-n); + cfi_adjust_cfa_offset n; + (* Note: We don't emit .cfi_offset for r1 (backchain) because trap frames + can overwrite the backchain location. The signal frame's val_expression + for r1 handles SP restoration during C call unwinding. *) + if fp && env.f.fun_frame_required then begin + ` mr 31, 1\n`; + cfi_offset ~reg: 31 (* FP *) ~offset: (fp_save_offset env - n) + end end | Lop(Imove | Ispill | Ireload) -> let src = i.arg.(0) and dst = i.res.(0) in @@ -618,13 +717,13 @@ let emit_instr env i = | {loc = Reg _; typ = Float}, {loc = Reg _; typ = Float} -> ` fmr {emit_reg dst}, {emit_reg src}\n` | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack _} -> - ` std {emit_reg src}, {emit_stack env dst}\n` + emit_reg_stack "std" env src dst 12 | {loc = Reg _; typ = Float}, {loc = Stack _} -> - ` stfd {emit_reg src}, {emit_stack env dst}\n` + emit_reg_stack "stfd" env src dst 12 | {loc = Stack _; typ = (Val | Int | Addr)}, {loc = Reg _} -> - ` ld {emit_reg dst}, {emit_stack env src}\n` + emit_reg_stack "ld" env dst src 12 | {loc = Stack _; typ = Float}, {loc = Reg _} -> - ` lfd {emit_reg dst}, {emit_stack env src}\n` + emit_reg_stack "lfd" env dst src 12 | (_, _) -> Misc.fatal_error "Emit: Imove" end @@ -688,7 +787,7 @@ let emit_instr env i = ` mtctr {emit_reg i.arg.(0)}\n`; ` mr 12, {emit_reg i.arg.(0)}\n`; (* addr of fn in r12 *) if env.f.fun_frame_required then begin - ` ld 11, {emit_int(retaddr_offset env)}(1)\n`; + emit_sp_mem "ld" emit_gpr 11 (retaddr_offset env) 11; ` mtlr 11\n` end; emit_free_frame env; @@ -700,7 +799,7 @@ let emit_instr env i = emit_tocload emit_gpr 12 (TocSym func); (* addr of fn must be in r12 *) ` mtctr 12\n`; if env.f.fun_frame_required then begin - ` ld 11, {emit_int(retaddr_offset env)}(1)\n`; + emit_sp_mem "ld" emit_gpr 11 (retaddr_offset env) 11; ` mtlr 11\n` end; emit_free_frame env; @@ -709,7 +808,7 @@ let emit_instr env i = | Lop(Iextcall { func; alloc; stack_ofs }) -> if stack_ofs > 0 then begin emit_tocload emit_gpr 25 (TocSym func); - ` li 24, {emit_int stack_ofs}\n`; + emit_li 24 stack_ofs; (* size in bytes of stack area containing the arguments *) emit_call "caml_c_call_stack_args"; record_frame env i.live (Dbg_other i.dbg); @@ -722,17 +821,49 @@ let emit_instr env i = end else begin (* Save OCaml stack pointer in a callee-save register *) ` mr 28, 1\n`; + cfi_remember_state (); + cfi_def_cfa_register ~reg:28; + if fp then + (* Link the stub frame to our caller (not us), so the frame walker + does not see this frame twice via our stale SP+16 retaddr. *) + ` ld 12, 0(1)\n`; (* Switch to C stack *) let offset = Domainstate.(idx_of_field Domain_c_stack) * 8 in ` ld 1, {emit_int offset}(30)\n`; + if fp then begin + ` stdu 12, {emit_int (-reserved_stack_space)}(1)\n`; + (* Follow the back chain back to the OCaml stack. *) + cfi_def_cfa_breg_deref ~reg:1 (* SP *) ~offset:0 + end; emit_call func; emit_call_nop(); + if fp then begin + ` addi 1, 1, {emit_int reserved_stack_space}\n` + end; (* Switch back to OCaml stack *) - ` mr 1, 28\n` + ` mr 1, 28\n`; + cfi_restore_state () end | Lop(Istackoffset n) -> - ` addi 1, 1, {emit_int (-n)}\n`; - adjust_stack_offset env n + (* [slot_offset] places outgoing arguments at SP + reserved_stack_space + + n, so the allocation must cover the ABI's reserved area too, + otherwise they overflow into the caller's frame. With frame + pointers, [stdu] keeps the back chain valid and LR is copied into + the new frame. Without them [addi] suffices. *) + if n > 0 then begin + let alloc = n + reserved_stack_space in + if fp then begin + emit_sp_mem "ld" emit_gpr 0 (retaddr_offset env) 12; + emit_frame_push alloc; + emit_sp_mem "std" emit_gpr 0 (alloc + 16) 12 + end else + emit_addi_inplace 1 (-alloc); + adjust_stack_offset env alloc + end else if n < 0 then begin + let dealloc = (-n) + reserved_stack_space in + emit_addi_inplace 1 dealloc; + adjust_stack_offset env (-dealloc) + end | Lop(Iload { memory_chunk; addressing_mode; is_atomic }) -> let loadinstr = load_mnemonic memory_chunk in if is_atomic then @@ -841,6 +972,15 @@ let emit_instr env i = ` ld {emit_reg i.res.(0)}, -16(1)\n` | Lop(Iopaque) -> assert (i.arg.(0).loc = i.res.(0).loc) + | Lop(Ispecific Isqrtf) -> + ` fsqrt {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` + | Lop(Ispecific(Iroundf r)) -> + let instr = (match r with + | Rnearest_away -> "frin" + | Rtoward_zero -> "friz" + | Rtoward_pos -> "frip" + | Rtoward_neg -> "frim") in + ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` | Lop(Ispecific sop) -> let instr = name_for_specific sop in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n` @@ -860,11 +1000,11 @@ let emit_instr env i = ` lwsync\n` | Lop (Ireturn_addr) -> if env.f.fun_frame_required then - ` ld {emit_reg i.res.(0)}, {emit_int(retaddr_offset env)}(1)\n` + emit_sp_mem "ld" emit_reg i.res.(0) (retaddr_offset env) 12 else ` mflr {emit_reg i.res.(0)}\n` | Lreloadretaddr -> - ` ld 11, {emit_int(retaddr_offset env)}(1)\n`; + emit_sp_mem "ld" emit_gpr 11 (retaddr_offset env) 11; ` mtlr 11\n` | Lreturn -> emit_free_frame env; @@ -937,11 +1077,24 @@ let emit_instr env i = ` bctr\n`; env.jumptables <- List.rev_append (Array.to_list jumptbl) env.jumptables | Lentertrap -> - emit_reload_toc env + emit_reload_toc env; + (* After exception unwinding, FP (r31) is stale. Restore FP = SP, but + only when this function established a frame pointer. *) + if fp && env.f.fun_frame_required then + ` mr 31, 1\n` | Ladjust_trap_depth { delta_traps } -> adjust_stack_offset env (trap_size * delta_traps) | Lpushtrap { lbl_handler; } -> - ` addi 1, 1, {emit_int (-trap_size)}\n`; + if fp then begin + (* stdu (not addi) so the frame walker can traverse trap frames. + Clear the parent LR save slot (parent_SP + 16) so stale data + there is not mistaken for a return address. *) + ` stdu 1, {emit_int (-trap_size)}(1)\n`; + ` li 0, 0\n`; + ` std 0, {emit_int (trap_size + 16)}(1)\n` + end + else + ` addi 1, 1, {emit_int (-trap_size)}\n`; adjust_stack_offset env trap_size; ` std 29, {emit_int reserved_stack_space}(1)\n`; emit_tocload emit_gpr 29 (TocLabel lbl_handler); @@ -1013,7 +1166,15 @@ let fundecl fundecl = ` .align 2\n`; (* Dynamic stack checking *) let stack_threshold_size = Config.stack_threshold * 8 in (* bytes *) - let max_frame_size = frame_size env + fundecl.fun_extra_stack_used in + (* The generic stack-usage analysis models each outgoing-argument region as + [n] bytes, but [Istackoffset] reserves [n + reserved_stack_space] (the + ELFv2 linkage area for the callee) which the analysis does not account for. + Outgoing-argument regions are never nested, so adding a single + [reserved_stack_space] whenever any extra stack is used covers the deepest + region and keeps the stack-overflow check conservative. *) + let max_frame_size = + frame_size env + fundecl.fun_extra_stack_used + + (if fundecl.fun_extra_stack_used > 0 then reserved_stack_space else 0) in let handle_overflow = ref None in if fundecl.fun_contains_nontail_calls || max_frame_size >= stack_threshold_size then begin @@ -1021,7 +1182,7 @@ let fundecl fundecl = (* The return address is saved in a register not used for param passing *) (* The size is passed in a register normally not used for param passing *) `{emit_label overflow}: mflr 28\n`; - ` li 27, {emit_int (Config.stack_threshold + max_frame_size / 8)}\n`; + emit_li 27 (Config.stack_threshold + max_frame_size / 8); emit_call "caml_call_realloc_stack"; emit_call_nop (); ` mtlr 28\n`; @@ -1046,7 +1207,7 @@ let fundecl fundecl = let f = max_frame_size + threshold_offset in let offset = Domainstate.(idx_of_field Domain_current_stack) * 8 in ` ld 11, {emit_int offset}(30)\n`; - ` addi 11, 11, {emit_int f}\n`; + emit_addi_inplace 11 f; ` cmpld 1, 11\n`; ` ble- {emit_label overflow}\n`; `{emit_label ret}:\n` diff --git a/asmcomp/power/proc.ml b/asmcomp/power/proc.ml index f7338a9adc9b..421218649207 100644 --- a/asmcomp/power/proc.ml +++ b/asmcomp/power/proc.ml @@ -22,6 +22,8 @@ open Reg open Arch open Mach +let fp = Config.with_frame_pointers + (* Registers available for register allocation *) (* Integer register map: @@ -31,10 +33,13 @@ open Mach 3 - 10 function arguments and results 11 - 12 temporaries 13 pointer to small data area - 14 - 28 general purpose, preserved by C + 14 - 22 general purpose, preserved by C + 23 allocation pointer + 24 - 28 general purpose, preserved by C 29 trap pointer 30 domain state pointer - 31 allocation pointer + 31 frame pointer when enabled (--enable-frame-pointers), + otherwise general purpose Floating-point register map: 0 temporary 1 - 13 function arguments and results @@ -42,9 +47,13 @@ open Mach *) let int_reg_name = + Array.append [| "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; (* 0 - 7 *) "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; (* 8 - 15 *) - "22"; "23"; "24"; "25"; "26"; "27"; "28" |] (* 16 - 22 *) + (* 16 - 21, r23 reserved for ALLOC_PTR *) + "22"; "24"; "25"; "26"; "27"; "28" |] + (* r31 allocatable unless used as frame pointer *) + (if fp then [||] else [| "31" |]) let float_reg_name = [| "0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; @@ -59,7 +68,7 @@ let register_class r = | Val | Int | Addr -> 0 | Float -> 1 -let num_available_registers = [| 23; 32 |] +let num_available_registers = [| Array.length int_reg_name; 32 |] let first_available_register = [| 0; 100 |] @@ -71,8 +80,9 @@ let rotate_registers = true (* Representation of hard registers by pseudo-registers *) let hard_int_reg = - let v = Array.make 23 Reg.dummy in - for i = 0 to 22 do v.(i) <- Reg.at_location Int (Reg i) done; v + let n = Array.length int_reg_name in + let v = Array.make n Reg.dummy in + for i = 0 to n - 1 do v.(i) <- Reg.at_location Int (Reg i) done; v let hard_float_reg = let v = Array.make 32 Reg.dummy in @@ -213,10 +223,12 @@ let loc_exn_bucket = phys_reg 0 *) let int_dwarf_reg_numbers = + Array.append [| 3; 4; 5; 6; 7; 8; 9; 10; 14; 15; 16; 17; 18; 19; 20; 21; - 22; 23; 24; 25; 26; 27; + 22; 24; 25; 26; 27; 28; (* r23 reserved for ALLOC_PTR *) |] + (if fp then [||] else [| 31 |]) let float_dwarf_reg_numbers = [| 32; 33; 34; 35; 36; 37; 38; 39; @@ -239,7 +251,7 @@ let stack_ptr_dwarf_register_number = 1 plus GPR28 because it is used to save the OCaml stack pointer. *) let destroyed_at_c_call = Array.of_list(List.map phys_reg - [0; 1; 2; 3; 4; 5; 6; 7; 22; + [0; 1; 2; 3; 4; 5; 6; 7; 21; (* 21 = r28, C_CALL_TMP *) 100; 101; 102; 103; 104; 105; 106; 107; 108; 109; 110; 111; 112; 113]) let destroyed_at_oper = function @@ -259,12 +271,14 @@ let destroyed_at_reloadretaddr = [| phys_reg 11 |] let safe_register_pressure = function Iextcall _ -> 13 - | _ -> 23 + | _ -> Array.length int_reg_name -let max_register_pressure = function +let max_register_pressure = + let n = Array.length int_reg_name in + function Iextcall _ -> [| 13; 18 |] - | Iintoffloat | Istore(Single, _, _) -> [| 23; 31 |] - | _ -> [| 23; 32 |] + | Iintoffloat | Istore(Single, _, _) -> [| n; 31 |] + | _ -> [| n; 32 |] (* Calling the assembler *) diff --git a/asmcomp/power/scheduling.ml b/asmcomp/power/scheduling.ml index 12efb70d8322..58c14b1f4795 100644 --- a/asmcomp/power/scheduling.ml +++ b/asmcomp/power/scheduling.ml @@ -37,6 +37,7 @@ method oper_latency = function | Imulf -> 5 | Idivf -> 33 | Ispecific(Imultaddf | Imultsubf) -> 5 + | Ispecific(Iroundf _) -> 4 | _ -> 1 method! reload_retaddr_latency = 12 diff --git a/asmcomp/power/selection.ml b/asmcomp/power/selection.ml index ea8f689beda8..1b6f1bcd3fff 100644 --- a/asmcomp/power/selection.ml +++ b/asmcomp/power/selection.ml @@ -49,6 +49,11 @@ let is_immediate_logical n = n <= 0xFFFF && n >= 0 (* Instruction selection *) +(* If you update [inline_ops], you may need to update [is_simple_expr] and/or + [effects_of], below. *) +let inline_ops = + [ "sqrt"; "caml_fma"; "caml_round"; "caml_trunc"; "ceil"; "floor" ] + class selector = object (self) inherit Selectgen.selector_generic as super @@ -65,9 +70,22 @@ method! is_immediate op n = | Iand | Ior | Ixor -> is_immediate_logical n | Icomp c -> self#is_immediate_test c n | Icheckbound -> 0 <= n && n <= 0x7FFF - (* twlle takes a 16-bit signed immediate but performs an unsigned compare *) + (* cmpldi takes a 16-bit unsigned immediate, + so this limit is conservative *) | _ -> super#is_immediate op n +method! is_simple_expr = function + (* inlined floating-point ops are simple if their arguments are *) + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + List.for_all self#is_simple_expr args + | e -> super#is_simple_expr e + +method! effects_of e = + match e with + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + Selectgen.Effect_and_coeffect.join_list_map args self#effects_of + | e -> super#effects_of e + method select_addressing _chunk exp = match select_addr exp with (Asymbol s, d, _dbg) -> @@ -88,6 +106,24 @@ method! select_operation op args dbg = (Ispecific Imultaddf, [arg1; arg2; arg3]) | (Csubf, [Cop(Cmulf, [arg1; arg2], _); arg3]) -> (Ispecific Imultsubf, [arg1; arg2; arg3]) + (* Recognize square root *) + | (Cextcall("sqrt", _, _, _), [arg]) -> + (Ispecific Isqrtf, [arg]) + (* Only the unboxed [Float.fma] passes floats in registers, hence the + argument types. *) + | (Cextcall("caml_fma", _, [XFloat; XFloat; XFloat], false), + [arg1; arg2; arg3]) -> + (Ispecific Imultaddf, [arg1; arg2; arg3]) + (* Only the unboxed rounding externals pass their argument in a + register, hence the argument type. *) + | (Cextcall("caml_round", _, [XFloat], false), _) -> + (Ispecific (Iroundf Rnearest_away), args) + | (Cextcall("caml_trunc", _, [XFloat], false), _) -> + (Ispecific (Iroundf Rtoward_zero), args) + | (Cextcall("ceil", _, [XFloat], false), _) -> + (Ispecific (Iroundf Rtoward_pos), args) + | (Cextcall("floor", _, [XFloat], false), _) -> + (Ispecific (Iroundf Rtoward_neg), args) | _ -> super#select_operation op args dbg diff --git a/asmcomp/power/stackframe.ml b/asmcomp/power/stackframe.ml index d165a2078cfa..2a80e454740b 100644 --- a/asmcomp/power/stackframe.ml +++ b/asmcomp/power/stackframe.ml @@ -18,7 +18,9 @@ open! Mach [@@warning "-66"] -let trap_handler_size = 16 +(* Must match [Emit]'s [trap_size]: 16 bytes normally, larger with frame + pointers (where [Lpushtrap] allocates a full frame). *) +let trap_handler_size = if Config.with_frame_pointers then 48 else 16 class stackframe = object diff --git a/asmcomp/riscv/CSE.ml b/asmcomp/riscv/CSE.ml index c1d41fbf0204..18214a648a9c 100644 --- a/asmcomp/riscv/CSE.ml +++ b/asmcomp/riscv/CSE.ml @@ -26,7 +26,7 @@ inherit cse_generic as super method! class_of_operation op = match op with - | Ispecific(Imultaddf _ | Imultsubf _) -> Op_pure + | Ispecific(Imultaddf _ | Imultsubf _ | Isqrtf) -> Op_pure | _ -> super#class_of_operation op method! is_cheap_operation op = diff --git a/asmcomp/riscv/arch.ml b/asmcomp/riscv/arch.ml index 90812ae4a7fd..091d77be94bb 100644 --- a/asmcomp/riscv/arch.ml +++ b/asmcomp/riscv/arch.ml @@ -27,6 +27,7 @@ let command_line_options = [] type specific_operation = | Imultaddf of bool (* multiply, optionally negate, and add *) | Imultsubf of bool (* multiply, optionally negate, and subtract *) + | Isqrtf (* floating-point square root *) (* Addressing modes *) @@ -80,6 +81,8 @@ let print_specific_operation printreg op ppf arg = | Imultsubf true -> fprintf ppf "-f (%a *f %a -f %a)" printreg arg.(0) printreg arg.(1) printreg arg.(2) + | Isqrtf -> + fprintf ppf "sqrtf %a" printreg arg.(0) (* Specific operations that are pure *) diff --git a/asmcomp/riscv/arch.mli b/asmcomp/riscv/arch.mli index 23f968552233..f163744b50c9 100644 --- a/asmcomp/riscv/arch.mli +++ b/asmcomp/riscv/arch.mli @@ -25,6 +25,7 @@ val command_line_options : (string * Arg.spec * string) list type specific_operation = | Imultaddf of bool (* multiply, optionally negate, and add *) | Imultsubf of bool (* multiply, optionally negate, and subtract *) + | Isqrtf (* floating-point square root *) (* Addressing modes *) diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp index 0ed345aa6f45..ae382a7ad382 100644 --- a/asmcomp/riscv/emit.mlp +++ b/asmcomp/riscv/emit.mlp @@ -273,11 +273,13 @@ let name_for_floatop2 = function | Idivf -> "fdiv.d" | _ -> Misc.fatal_error "Emit.Iopf2" +(* Three-operand specific operations only, [Isqrtf] is emitted directly. *) let name_for_specific = function | Imultaddf false -> "fmadd.d" | Imultaddf true -> "fnmadd.d" | Imultsubf false -> "fmsub.d" | Imultsubf true -> "fnmsub.d" + | _ -> Misc.fatal_error "Emit.name_for_specific" (* Output the assembly code for an instruction *) @@ -536,6 +538,8 @@ let emit_instr env i = ` fcvt.l.d {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, rtz\n` | Lop(Iopaque) -> assert (i.arg.(0).loc = i.res.(0).loc) + | Lop(Ispecific Isqrtf) -> + ` fsqrt.d {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` | Lop(Ispecific sop) -> let instr = name_for_specific sop in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n` diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml index 0183cb329ff8..b819cf0ee183 100644 --- a/asmcomp/riscv/selection.ml +++ b/asmcomp/riscv/selection.ml @@ -20,9 +20,13 @@ open Cmm open Arch open Mach +(* If you update [inline_ops], you may need to update [is_simple_expr] and/or + [effects_of], below. *) +let inline_ops = [ "sqrt"; "caml_fma" ] + (* Instruction selection *) -class selector = object +class selector = object (self) inherit Selectgen.selector_generic as super @@ -36,6 +40,18 @@ method! is_immediate op n = | Isub -> is_immediate (-n) | _ -> super#is_immediate op n +method! is_simple_expr = function + (* inlined floating-point ops are simple if their arguments are *) + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + List.for_all self#is_simple_expr args + | e -> super#is_simple_expr e + +method! effects_of e = + match e with + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + Selectgen.Effect_and_coeffect.join_list_map args self#effects_of + | e -> super#effects_of e + method select_addressing _ = function | Cop(Cadda, [arg; Cconst_int (n, _)], _) when is_immediate n -> (Iindexed n, arg) @@ -57,6 +73,14 @@ method! select_operation op args dbg = (Ispecific (Imultsubf true), [arg1; arg2; arg3]) | (Cnegf, [Cop(Caddf, [Cop(Cmulf, [arg1; arg2], _); arg3], _)]) -> (Ispecific (Imultaddf true), [arg1; arg2; arg3]) + (* Recognize square root *) + | (Cextcall("sqrt", _, _, _), [arg]) -> + (Ispecific Isqrtf, [arg]) + (* Only the unboxed [Float.fma] passes floats in registers, hence the + argument types. *) + | (Cextcall("caml_fma", _, [XFloat; XFloat; XFloat], false), + [arg1; arg2; arg3]) -> + (Ispecific (Imultaddf false), [arg1; arg2; arg3]) | (Cstore (Word_int | Word_val as memory_chunk, Assignment), [arg1; arg2]) -> (* Use trivial addressing mode for non-initializing stores *) (Istore (memory_chunk, Iindexed 0, true), [arg2; arg1]) diff --git a/asmcomp/s390x/CSE.ml b/asmcomp/s390x/CSE.ml index dcefc4dc7244..f1f0f9f7e4a9 100644 --- a/asmcomp/s390x/CSE.ml +++ b/asmcomp/s390x/CSE.ml @@ -28,7 +28,7 @@ inherit cse_generic as super method! class_of_operation op = match op with - | Ispecific(Imultaddf | Imultsubf) -> Op_pure + | Ispecific(Imultaddf | Imultsubf | Isqrtf | Ibswap _) -> Op_pure | _ -> super#class_of_operation op method! is_cheap_operation op = diff --git a/asmcomp/s390x/arch.ml b/asmcomp/s390x/arch.ml index e1d0a2cc03a6..e88b5dbc5cd8 100644 --- a/asmcomp/s390x/arch.ml +++ b/asmcomp/s390x/arch.ml @@ -33,6 +33,8 @@ let command_line_options = type specific_operation = Imultaddf (* multiply and add *) | Imultsubf (* multiply and subtract *) + | Isqrtf (* floating-point square root *) + | Ibswap of int (* endianness conversion *) (* Addressing modes *) @@ -82,6 +84,10 @@ let print_specific_operation printreg op ppf arg = | Imultsubf -> fprintf ppf "%a *f %a -f %a" printreg arg.(0) printreg arg.(1) printreg arg.(2) + | Isqrtf -> + fprintf ppf "sqrtf %a" printreg arg.(0) + | Ibswap n -> + fprintf ppf "bswap_%i %a" n printreg arg.(0) (* Specific operations that are pure *) diff --git a/asmcomp/s390x/arch.mli b/asmcomp/s390x/arch.mli index 4b8f6dc2d415..defafedde2e7 100644 --- a/asmcomp/s390x/arch.mli +++ b/asmcomp/s390x/arch.mli @@ -27,6 +27,8 @@ val command_line_options : (string * Arg.spec * string) list type specific_operation = Imultaddf (* multiply and add *) | Imultsubf (* multiply and subtract *) + | Isqrtf (* floating-point square root *) + | Ibswap of int (* endianness conversion *) (* Addressing modes *) diff --git a/asmcomp/s390x/emit.mlp b/asmcomp/s390x/emit.mlp index 0e37e313714d..d6edcc02436b 100644 --- a/asmcomp/s390x/emit.mlp +++ b/asmcomp/s390x/emit.mlp @@ -284,6 +284,7 @@ let name_for_floatop2 = function let name_for_specific = function Imultaddf -> "madbr" | Imultsubf -> "msdbr" + | _ -> Misc.fatal_error "Emit.Ispecific" (* Output the assembly code for an instruction *) @@ -589,7 +590,24 @@ let emit_instr env i = ` cgdbr {emit_reg i.res.(0)}, 5, {emit_reg i.arg.(0)}\n` | Lop(Iopaque) -> assert (i.arg.(0).loc = i.res.(0).loc) - | Lop(Ispecific sop) -> + | Lop(Ispecific Isqrtf) -> + ` sqdbr {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` + | Lop(Ispecific (Ibswap 16)) -> + (* Shifting the halfword up to the top means the full 64-bit reverse + brings it back down zero-extended, which is what the C version + returns. *) + ` sllg {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, 48(%r0)\n`; + ` lrvgr {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n` + | Lop(Ispecific (Ibswap 32)) -> + (* lrvr leaves bits 0-31 alone (PoP 7-328), and the C version returns + a sign-extended int32, so lgfr supplies the top half. *) + ` lrvr {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`; + ` lgfr {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n` + | Lop(Ispecific (Ibswap 64)) -> + ` lrvgr {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n` + | Lop(Ispecific (Ibswap _)) -> + Misc.fatal_error "Emit.Ibswap: unsupported width" + | Lop(Ispecific (Imultaddf | Imultsubf as sop)) -> assert (i.arg.(2).loc = i.res.(0).loc); let instr = name_for_specific sop in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n` diff --git a/asmcomp/s390x/selection.ml b/asmcomp/s390x/selection.ml index cce96959bebe..fe51db70e1f6 100644 --- a/asmcomp/s390x/selection.ml +++ b/asmcomp/s390x/selection.ml @@ -52,7 +52,7 @@ let pseudoregs_for_operation op arg res = (* Two-address binary operations: arg.(0) and res.(0) must be the same *) | Iintop(Iadd|Isub|Imul|Iand|Ior|Ixor) | Iaddf|Isubf|Imulf|Idivf -> ([|res.(0); arg.(1)|], res) - | Ispecific _ -> + | Ispecific (Imultaddf | Imultsubf) -> ( [| arg.(0); arg.(1); res.(0) |], [| res.(0) |]) (* One-address unary operations: arg.(0) and res.(0) must be the same *) | Iintop_imm((Imul|Iand|Ior|Ixor), _) -> (res, res) @@ -62,6 +62,12 @@ let pseudoregs_for_operation op arg res = let is_immediate n = n <= 0x7FFF_FFFF && n >= -0x8000_0000 let is_immediate_logical n = n <= 0xFFFF_FFFF && n >= 0 +(* If you update [inline_ops], you may need to update [is_simple_expr] and/or + [effects_of], below. *) +let inline_ops = + [ "sqrt"; "caml_bswap16_direct"; "caml_fma"; "caml_int32_direct_bswap"; + "caml_int64_direct_bswap"; "caml_nativeint_direct_bswap" ] + class selector = object (self) inherit Selectgen.selector_generic as super @@ -100,9 +106,37 @@ method! select_operation op args dbg = (Ispecific Imultaddf, [arg1; arg2; arg3]) | (Csubf, [Cop(Cmulf, [arg1; arg2], _); arg3]) -> (Ispecific Imultsubf, [arg1; arg2; arg3]) + (* Recognize square root *) + | (Cextcall("sqrt", _, _, _), [arg]) -> + (Ispecific Isqrtf, [arg]) + (* Only the unboxed [Float.fma] passes floats in registers, hence the + argument types. *) + | (Cextcall("caml_fma", _, [XFloat; XFloat; XFloat], false), + [arg1; arg2; arg3]) -> + (Ispecific Imultaddf, [arg1; arg2; arg3]) + (* Recognize byte swaps *) + | (Cextcall("caml_bswap16_direct", _, _, _), _) -> + (Ispecific (Ibswap 16), args) + | (Cextcall("caml_int32_direct_bswap", _, _, _), _) -> + (Ispecific (Ibswap 32), args) + | (Cextcall(("caml_int64_direct_bswap"|"caml_nativeint_direct_bswap"), + _, _, _), _) -> + (Ispecific (Ibswap 64), args) | _ -> super#select_operation op args dbg +method! is_simple_expr = function + (* inlined floating-point ops are simple if their arguments are *) + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + List.for_all self#is_simple_expr args + | e -> super#is_simple_expr e + +method! effects_of e = + match e with + | Cop(Cextcall (fn, _, _, _), args, _) when List.mem fn inline_ops -> + Selectgen.Effect_and_coeffect.join_list_map args self#effects_of + | e -> super#effects_of e + method! insert_op_debug env op dbg rs rd = try let (rsrc, rdst) = pseudoregs_for_operation op rs rd in diff --git a/boot/menhir/parser.ml b/boot/menhir/parser.ml index 05e5d3ee2fa9..67524f11361c 100644 --- a/boot/menhir/parser.ml +++ b/boot/menhir/parser.ml @@ -977,7 +977,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4300 "parsing/parser.mly" +# 4309 "parsing/parser.mly" ( "+" ) # 983 "parsing/parser.ml" in @@ -1002,7 +1002,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4301 "parsing/parser.mly" +# 4310 "parsing/parser.mly" ( "+." ) # 1008 "parsing/parser.ml" in @@ -1027,7 +1027,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3721 "parsing/parser.mly" +# 3730 "parsing/parser.mly" ( _1 ) # 1033 "parsing/parser.ml" in @@ -1081,13 +1081,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3665 "parsing/parser.mly" +# 3674 "parsing/parser.mly" ( mkrhs _2 _sloc ) # 1087 "parsing/parser.ml" in -# 3724 "parsing/parser.mly" +# 3733 "parsing/parser.mly" ( Ptyp_alias(ty, tyvar) ) # 1093 "parsing/parser.ml" @@ -1097,13 +1097,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1103 "parsing/parser.ml" in ( -# 3726 "parsing/parser.mly" +# 3735 "parsing/parser.mly" ( _1 ) # 1109 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1154,7 +1154,7 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 1160 "parsing/parser.ml" @@ -1163,7 +1163,7 @@ module Tables = struct let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 1169 "parsing/parser.ml" @@ -1172,7 +1172,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2784 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklb ~loc:_sloc false body attrs @@ -1201,7 +1201,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4184 "parsing/parser.mly" +# 4193 "parsing/parser.mly" ( _1 ) # 1207 "parsing/parser.ml" in @@ -1226,7 +1226,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4185 "parsing/parser.mly" +# 4194 "parsing/parser.mly" ( Lident _1 ) # 1232 "parsing/parser.ml" in @@ -1251,7 +1251,7 @@ module Tables = struct let _startpos = _startpos_type__ in let _endpos = _endpos_type__ in let _v : (Parsetree.core_type) = -# 3924 "parsing/parser.mly" +# 3933 "parsing/parser.mly" ( type_ ) # 1257 "parsing/parser.ml" in @@ -1283,18 +1283,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1289 "parsing/parser.ml" in let tys = -# 3957 "parsing/parser.mly" +# 3966 "parsing/parser.mly" ( [] ) # 1295 "parsing/parser.ml" in -# 3928 "parsing/parser.mly" +# 3937 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) # 1300 "parsing/parser.ml" @@ -1303,13 +1303,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1309 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1315 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1349,18 +1349,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1355 "parsing/parser.ml" in let tys = -# 3959 "parsing/parser.mly" +# 3968 "parsing/parser.mly" ( [ ty ] ) # 1361 "parsing/parser.ml" in -# 3928 "parsing/parser.mly" +# 3937 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) # 1366 "parsing/parser.ml" @@ -1370,13 +1370,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1376 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1382 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1431,7 +1431,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1437 "parsing/parser.ml" @@ -1444,19 +1444,19 @@ module Tables = struct # 1445 "parsing/parser.ml" in -# 1191 "parsing/parser.mly" +# 1193 "parsing/parser.mly" ( xs ) # 1450 "parsing/parser.ml" in -# 3961 "parsing/parser.mly" +# 3970 "parsing/parser.mly" ( tys ) # 1456 "parsing/parser.ml" in -# 3928 "parsing/parser.mly" +# 3937 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) # 1462 "parsing/parser.ml" @@ -1466,13 +1466,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1472 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1478 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1512,18 +1512,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1518 "parsing/parser.ml" in let tys = -# 3957 "parsing/parser.mly" +# 3966 "parsing/parser.mly" ( [] ) # 1524 "parsing/parser.ml" in -# 3932 "parsing/parser.mly" +# 3941 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) # 1529 "parsing/parser.ml" @@ -1533,13 +1533,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1539 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1545 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1586,18 +1586,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1592 "parsing/parser.ml" in let tys = -# 3959 "parsing/parser.mly" +# 3968 "parsing/parser.mly" ( [ ty ] ) # 1598 "parsing/parser.ml" in -# 3932 "parsing/parser.mly" +# 3941 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) # 1603 "parsing/parser.ml" @@ -1607,13 +1607,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1613 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1619 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1675,7 +1675,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1681 "parsing/parser.ml" @@ -1688,19 +1688,19 @@ module Tables = struct # 1689 "parsing/parser.ml" in -# 1191 "parsing/parser.mly" +# 1193 "parsing/parser.mly" ( xs ) # 1694 "parsing/parser.ml" in -# 3961 "parsing/parser.mly" +# 3970 "parsing/parser.mly" ( tys ) # 1700 "parsing/parser.ml" in -# 3932 "parsing/parser.mly" +# 3941 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) # 1706 "parsing/parser.ml" @@ -1710,13 +1710,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1716 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1722 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1763,13 +1763,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 1769 "parsing/parser.ml" in -# 3936 "parsing/parser.mly" +# 3945 "parsing/parser.mly" ( Ptyp_open (mod_ident, type_) ) # 1775 "parsing/parser.ml" @@ -1779,13 +1779,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1785 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1791 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1820,7 +1820,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 3938 "parsing/parser.mly" +# 3947 "parsing/parser.mly" ( Ptyp_var ident ) # 1826 "parsing/parser.ml" in @@ -1829,13 +1829,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1835 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1841 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1863,7 +1863,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 3940 "parsing/parser.mly" +# 3949 "parsing/parser.mly" ( Ptyp_any ) # 1869 "parsing/parser.ml" in @@ -1871,13 +1871,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 1877 "parsing/parser.ml" in ( -# 3942 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) # 1883 "parsing/parser.ml" : (Parsetree.core_type)) @@ -1905,7 +1905,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 4368 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( _1 ) # 1911 "parsing/parser.ml" in @@ -1913,13 +1913,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1044 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) # 1919 "parsing/parser.ml" in ( -# 4370 "parsing/parser.mly" +# 4379 "parsing/parser.mly" ( _1 ) # 1925 "parsing/parser.ml" : (Ast_helper.str)) @@ -1961,7 +1961,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 4369 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( _1 ^ "." ^ _3.txt ) # 1967 "parsing/parser.ml" in @@ -1970,13 +1970,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1044 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) # 1976 "parsing/parser.ml" in ( -# 4370 "parsing/parser.mly" +# 4379 "parsing/parser.mly" ( _1 ) # 1982 "parsing/parser.ml" : (Ast_helper.str)) @@ -2002,7 +2002,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4425 "parsing/parser.mly" +# 4434 "parsing/parser.mly" ( Builtin_attributes.mark_payload_attrs_used _1; _1 ) @@ -2054,7 +2054,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4374 "parsing/parser.mly" +# 4383 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) # 2060 "parsing/parser.ml" : (Parsetree.attribute)) @@ -2080,7 +2080,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = -# 2025 "parsing/parser.mly" +# 2030 "parsing/parser.mly" ( _1 ) # 2086 "parsing/parser.ml" in @@ -2122,7 +2122,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2128 "parsing/parser.ml" @@ -2131,7 +2131,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2027 "parsing/parser.mly" +# 2032 "parsing/parser.mly" ( wrap_class_attrs ~loc:_sloc _3 _2 ) # 2137 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -2175,7 +2175,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2029 "parsing/parser.mly" +# 2034 "parsing/parser.mly" ( class_of_let_bindings ~loc:_sloc _1 _3 ) # 2181 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -2242,7 +2242,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 2248 "parsing/parser.ml" @@ -2251,13 +2251,13 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2257 "parsing/parser.ml" in let _3 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) # 2263 "parsing/parser.ml" in @@ -2265,7 +2265,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2031 "parsing/parser.mly" +# 2036 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) @@ -2341,7 +2341,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 2347 "parsing/parser.ml" @@ -2350,13 +2350,13 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2356 "parsing/parser.ml" in let _3 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) # 2362 "parsing/parser.ml" in @@ -2364,7 +2364,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2031 "parsing/parser.mly" +# 2036 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) @@ -2399,7 +2399,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2035 "parsing/parser.mly" +# 2040 "parsing/parser.mly" ( Cl.attr _1 _2 ) # 2405 "parsing/parser.ml" in @@ -2440,13 +2440,13 @@ module Tables = struct # 2441 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) # 2446 "parsing/parser.ml" in -# 2038 "parsing/parser.mly" +# 2043 "parsing/parser.mly" ( Pcl_apply(_1, _2) ) # 2452 "parsing/parser.ml" @@ -2456,13 +2456,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 2462 "parsing/parser.ml" in ( -# 2041 "parsing/parser.mly" +# 2046 "parsing/parser.mly" ( _1 ) # 2468 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -2490,7 +2490,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2040 "parsing/parser.mly" +# 2045 "parsing/parser.mly" ( Pcl_extension _1 ) # 2496 "parsing/parser.ml" in @@ -2498,13 +2498,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 2504 "parsing/parser.ml" in ( -# 2041 "parsing/parser.mly" +# 2046 "parsing/parser.mly" ( _1 ) # 2510 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -2561,7 +2561,7 @@ module Tables = struct let _6 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2567 "parsing/parser.ml" @@ -2570,13 +2570,13 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2576 "parsing/parser.ml" in let _2 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) # 2582 "parsing/parser.ml" in @@ -2584,7 +2584,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2090 "parsing/parser.mly" +# 2095 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) # 2591 "parsing/parser.ml" @@ -2649,7 +2649,7 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2655 "parsing/parser.ml" @@ -2658,13 +2658,13 @@ module Tables = struct let _3 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2664 "parsing/parser.ml" in let _2 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) # 2670 "parsing/parser.ml" in @@ -2672,7 +2672,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2090 "parsing/parser.mly" +# 2095 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) # 2679 "parsing/parser.ml" @@ -2718,7 +2718,7 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2724 "parsing/parser.ml" @@ -2728,7 +2728,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2093 "parsing/parser.mly" +# 2098 "parsing/parser.mly" ( let v, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_val v) ~attrs:(attrs@_3) ~docs ) @@ -2775,7 +2775,7 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2781 "parsing/parser.ml" @@ -2785,7 +2785,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2097 "parsing/parser.mly" +# 2102 "parsing/parser.mly" ( let meth, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_method meth) ~attrs:(attrs@_3) ~docs ) @@ -2837,7 +2837,7 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2843 "parsing/parser.ml" @@ -2846,7 +2846,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2852 "parsing/parser.ml" @@ -2855,7 +2855,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2101 "parsing/parser.mly" +# 2106 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_constraint _3) ~attrs:(_2@_4) ~docs ) # 2862 "parsing/parser.ml" @@ -2906,7 +2906,7 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2912 "parsing/parser.ml" @@ -2915,7 +2915,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 2921 "parsing/parser.ml" @@ -2924,7 +2924,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2104 "parsing/parser.mly" +# 2109 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_initializer _3) ~attrs:(_2@_4) ~docs ) # 2931 "parsing/parser.ml" @@ -2961,7 +2961,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 2967 "parsing/parser.ml" @@ -2971,7 +2971,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2107 "parsing/parser.mly" +# 2112 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_extension _1) ~attrs:_2 ~docs ) # 2978 "parsing/parser.ml" @@ -3000,7 +3000,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2110 "parsing/parser.mly" +# 2115 "parsing/parser.mly" ( Pcf_attribute _1 ) # 3006 "parsing/parser.ml" in @@ -3008,13 +3008,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1059 "parsing/parser.mly" +# 1061 "parsing/parser.mly" ( mkcf ~loc:_sloc _1 ) # 3014 "parsing/parser.ml" in ( -# 2111 "parsing/parser.mly" +# 2116 "parsing/parser.mly" ( _1 ) # 3020 "parsing/parser.ml" : (Parsetree.class_field)) @@ -3047,7 +3047,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2005 "parsing/parser.mly" +# 2010 "parsing/parser.mly" ( _2 ) # 3053 "parsing/parser.ml" in @@ -3095,7 +3095,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2008 "parsing/parser.mly" +# 2013 "parsing/parser.mly" ( Pcl_constraint(_4, _2) ) # 3101 "parsing/parser.ml" in @@ -3104,13 +3104,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 3110 "parsing/parser.ml" in ( -# 2011 "parsing/parser.mly" +# 2016 "parsing/parser.mly" ( _1 ) # 3116 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -3145,7 +3145,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2010 "parsing/parser.mly" +# 2015 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, _2) ) # 3151 "parsing/parser.ml" in @@ -3154,13 +3154,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 3160 "parsing/parser.ml" in ( -# 2011 "parsing/parser.mly" +# 2016 "parsing/parser.mly" ( _1 ) # 3166 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -3202,7 +3202,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2066 "parsing/parser.mly" +# 2071 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) # 3208 "parsing/parser.ml" in @@ -3211,13 +3211,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 3217 "parsing/parser.ml" in ( -# 2067 "parsing/parser.mly" +# 2072 "parsing/parser.mly" ( _1 ) # 3223 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -3252,7 +3252,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2066 "parsing/parser.mly" +# 2071 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) # 3258 "parsing/parser.ml" in @@ -3261,13 +3261,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 3267 "parsing/parser.ml" in ( -# 2067 "parsing/parser.mly" +# 2072 "parsing/parser.mly" ( _1 ) # 3273 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -3293,7 +3293,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4174 "parsing/parser.mly" +# 4183 "parsing/parser.mly" ( _1 ) # 3299 "parsing/parser.ml" in @@ -3336,7 +3336,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2075 "parsing/parser.mly" +# 2080 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) # 3342 "parsing/parser.ml" : (Parsetree.pattern)) @@ -3392,7 +3392,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2077 "parsing/parser.mly" +# 2082 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) # 3398 "parsing/parser.ml" in @@ -3401,13 +3401,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) # 3407 "parsing/parser.ml" in ( -# 2078 "parsing/parser.mly" +# 2083 "parsing/parser.mly" ( _1 ) # 3413 "parsing/parser.ml" : (Parsetree.pattern)) @@ -3430,7 +3430,7 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in ( -# 2080 "parsing/parser.mly" +# 2085 "parsing/parser.mly" ( ghpat ~loc:_sloc Ppat_any ) # 3436 "parsing/parser.ml" : (Parsetree.pattern)) @@ -3470,7 +3470,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 2205 "parsing/parser.mly" +# 2210 "parsing/parser.mly" ( _2 ) # 3476 "parsing/parser.ml" in @@ -3492,7 +3492,7 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in ( -# 2207 "parsing/parser.mly" +# 2212 "parsing/parser.mly" ( ghtyp ~loc:_sloc Ptyp_any ) # 3498 "parsing/parser.ml" : (Parsetree.core_type)) @@ -3542,7 +3542,7 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 3548 "parsing/parser.ml" @@ -3551,7 +3551,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 3557 "parsing/parser.ml" @@ -3560,7 +3560,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2215 "parsing/parser.mly" +# 2220 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_inherit _3) ~attrs:(_2@_4) ~docs ) # 3567 "parsing/parser.ml" @@ -3636,7 +3636,7 @@ module Tables = struct let _4 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 3642 "parsing/parser.ml" @@ -3646,7 +3646,7 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let label = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) # 3652 "parsing/parser.ml" in @@ -3654,13 +3654,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 3660 "parsing/parser.ml" in -# 2241 "parsing/parser.mly" +# 2246 "parsing/parser.mly" ( let mut, virt = flags in label, mut, virt, ty @@ -3671,7 +3671,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 3677 "parsing/parser.ml" @@ -3680,7 +3680,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2218 "parsing/parser.mly" +# 2223 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_val _3) ~attrs:(_2@_4) ~docs ) # 3687 "parsing/parser.ml" @@ -3756,7 +3756,7 @@ module Tables = struct let _7 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 3762 "parsing/parser.ml" @@ -3765,7 +3765,7 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) # 3771 "parsing/parser.ml" @@ -3773,7 +3773,7 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) # 3779 "parsing/parser.ml" in @@ -3781,7 +3781,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 3787 "parsing/parser.ml" @@ -3789,7 +3789,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 3795 "parsing/parser.ml" @@ -3798,7 +3798,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2223 "parsing/parser.mly" +# 2228 "parsing/parser.mly" ( let (p, v) = _3 in let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_method (_4, p, v, _6)) ~attrs:(_2@_7) ~docs ) @@ -3850,7 +3850,7 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 3856 "parsing/parser.ml" @@ -3859,7 +3859,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 3865 "parsing/parser.ml" @@ -3868,7 +3868,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2227 "parsing/parser.mly" +# 2232 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_constraint _3) ~attrs:(_2@_4) ~docs ) # 3875 "parsing/parser.ml" @@ -3905,7 +3905,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 3911 "parsing/parser.ml" @@ -3915,7 +3915,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2230 "parsing/parser.mly" +# 2235 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_extension _1) ~attrs:_2 ~docs ) # 3922 "parsing/parser.ml" @@ -3944,7 +3944,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2233 "parsing/parser.mly" +# 2238 "parsing/parser.mly" ( Pctf_attribute _1 ) # 3950 "parsing/parser.ml" in @@ -3952,13 +3952,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "parsing/parser.mly" +# 1059 "parsing/parser.mly" ( mkctf ~loc:_sloc _1 ) # 3958 "parsing/parser.ml" in ( -# 2234 "parsing/parser.mly" +# 2239 "parsing/parser.mly" ( _1 ) # 3964 "parsing/parser.ml" : (Parsetree.class_type_field)) @@ -3991,25 +3991,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 3997 "parsing/parser.ml" in let tys = let tys = -# 2191 "parsing/parser.mly" +# 2196 "parsing/parser.mly" ( [] ) # 4004 "parsing/parser.ml" in -# 2197 "parsing/parser.mly" +# 2202 "parsing/parser.mly" ( tys ) # 4009 "parsing/parser.ml" in -# 2174 "parsing/parser.mly" +# 2179 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) # 4015 "parsing/parser.ml" @@ -4018,13 +4018,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 4024 "parsing/parser.ml" in ( -# 2177 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( _1 ) # 4030 "parsing/parser.ml" : (Parsetree.class_type)) @@ -4079,7 +4079,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 4085 "parsing/parser.ml" @@ -4093,25 +4093,25 @@ module Tables = struct # 4094 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 4099 "parsing/parser.ml" in -# 2193 "parsing/parser.mly" +# 2198 "parsing/parser.mly" ( params ) # 4105 "parsing/parser.ml" in -# 2197 "parsing/parser.mly" +# 2202 "parsing/parser.mly" ( tys ) # 4111 "parsing/parser.ml" in -# 2174 "parsing/parser.mly" +# 2179 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) # 4117 "parsing/parser.ml" @@ -4121,13 +4121,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 4127 "parsing/parser.ml" in ( -# 2177 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( _1 ) # 4133 "parsing/parser.ml" : (Parsetree.class_type)) @@ -4155,7 +4155,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2176 "parsing/parser.mly" +# 2181 "parsing/parser.mly" ( Pcty_extension _1 ) # 4161 "parsing/parser.ml" in @@ -4163,13 +4163,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 4169 "parsing/parser.ml" in ( -# 2177 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( _1 ) # 4175 "parsing/parser.ml" : (Parsetree.class_type)) @@ -4233,7 +4233,7 @@ module Tables = struct # 4234 "parsing/parser.ml" in -# 2211 "parsing/parser.mly" +# 2216 "parsing/parser.mly" ( _1 ) # 4239 "parsing/parser.ml" @@ -4242,13 +4242,13 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1007 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) # 4248 "parsing/parser.ml" in -# 2201 "parsing/parser.mly" +# 2206 "parsing/parser.mly" ( Csig.mk _1 _2 ) # 4254 "parsing/parser.ml" @@ -4256,7 +4256,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 4262 "parsing/parser.ml" @@ -4265,7 +4265,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2179 "parsing/parser.mly" +# 2184 "parsing/parser.mly" ( mkcty ~loc:_sloc ~attrs:_2 (Pcty_signature _3) ) # 4271 "parsing/parser.ml" : (Parsetree.class_type)) @@ -4329,7 +4329,7 @@ module Tables = struct # 4330 "parsing/parser.ml" in -# 2211 "parsing/parser.mly" +# 2216 "parsing/parser.mly" ( _1 ) # 4335 "parsing/parser.ml" @@ -4338,13 +4338,13 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1007 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) # 4344 "parsing/parser.ml" in -# 2201 "parsing/parser.mly" +# 2206 "parsing/parser.mly" ( Csig.mk _1 _2 ) # 4350 "parsing/parser.ml" @@ -4352,7 +4352,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 4358 "parsing/parser.ml" @@ -4360,7 +4360,7 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2181 "parsing/parser.mly" +# 2186 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) # 4366 "parsing/parser.ml" : (Parsetree.class_type)) @@ -4393,7 +4393,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_type) = -# 2183 "parsing/parser.mly" +# 2188 "parsing/parser.mly" ( Cty.attr _1 _2 ) # 4399 "parsing/parser.ml" in @@ -4459,7 +4459,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 4465 "parsing/parser.ml" @@ -4468,13 +4468,13 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 4474 "parsing/parser.ml" in let _3 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) # 4480 "parsing/parser.ml" in @@ -4482,7 +4482,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2185 "parsing/parser.mly" +# 2190 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) @@ -4558,7 +4558,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 4564 "parsing/parser.ml" @@ -4567,13 +4567,13 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 4573 "parsing/parser.ml" in let _3 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) # 4579 "parsing/parser.ml" in @@ -4581,7 +4581,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2185 "parsing/parser.mly" +# 2190 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) @@ -4623,7 +4623,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.class_expr) = -# 2045 "parsing/parser.mly" +# 2050 "parsing/parser.mly" ( _2 ) # 4629 "parsing/parser.ml" in @@ -4665,7 +4665,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2047 "parsing/parser.mly" +# 2052 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) # 4671 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -4698,25 +4698,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 4704 "parsing/parser.ml" in let tys = let tys = -# 2191 "parsing/parser.mly" +# 2196 "parsing/parser.mly" ( [] ) # 4711 "parsing/parser.ml" in -# 2197 "parsing/parser.mly" +# 2202 "parsing/parser.mly" ( tys ) # 4716 "parsing/parser.ml" in -# 2050 "parsing/parser.mly" +# 2055 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) # 4722 "parsing/parser.ml" @@ -4725,13 +4725,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 4731 "parsing/parser.ml" in ( -# 2057 "parsing/parser.mly" +# 2062 "parsing/parser.mly" ( _1 ) # 4737 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -4786,7 +4786,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 4792 "parsing/parser.ml" @@ -4800,25 +4800,25 @@ module Tables = struct # 4801 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 4806 "parsing/parser.ml" in -# 2193 "parsing/parser.mly" +# 2198 "parsing/parser.mly" ( params ) # 4812 "parsing/parser.ml" in -# 2197 "parsing/parser.mly" +# 2202 "parsing/parser.mly" ( tys ) # 4818 "parsing/parser.ml" in -# 2050 "parsing/parser.mly" +# 2055 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) # 4824 "parsing/parser.ml" @@ -4828,13 +4828,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 4834 "parsing/parser.ml" in ( -# 2057 "parsing/parser.mly" +# 2062 "parsing/parser.mly" ( _1 ) # 4840 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -4900,7 +4900,7 @@ module Tables = struct # 4901 "parsing/parser.ml" in -# 2084 "parsing/parser.mly" +# 2089 "parsing/parser.mly" ( _1 ) # 4906 "parsing/parser.ml" @@ -4909,13 +4909,13 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1006 "parsing/parser.mly" +# 1008 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) # 4915 "parsing/parser.ml" in -# 2071 "parsing/parser.mly" +# 2076 "parsing/parser.mly" ( Cstr.mk _1 _2 ) # 4921 "parsing/parser.ml" @@ -4923,7 +4923,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 4929 "parsing/parser.ml" @@ -4931,7 +4931,7 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2052 "parsing/parser.mly" +# 2057 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) # 4937 "parsing/parser.ml" @@ -4941,13 +4941,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 4947 "parsing/parser.ml" in ( -# 2057 "parsing/parser.mly" +# 2062 "parsing/parser.mly" ( _1 ) # 4953 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -5003,7 +5003,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2054 "parsing/parser.mly" +# 2059 "parsing/parser.mly" ( Pcl_constraint(_2, _4) ) # 5009 "parsing/parser.ml" in @@ -5012,13 +5012,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 5018 "parsing/parser.ml" in ( -# 2057 "parsing/parser.mly" +# 2062 "parsing/parser.mly" ( _1 ) # 5024 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -5077,7 +5077,7 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2056 "parsing/parser.mly" +# 2061 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) # 5083 "parsing/parser.ml" @@ -5087,13 +5087,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1061 "parsing/parser.mly" +# 1063 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) # 5093 "parsing/parser.ml" in ( -# 2057 "parsing/parser.mly" +# 2062 "parsing/parser.mly" ( _1 ) # 5099 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -5157,7 +5157,7 @@ module Tables = struct # 5158 "parsing/parser.ml" in -# 2084 "parsing/parser.mly" +# 2089 "parsing/parser.mly" ( _1 ) # 5163 "parsing/parser.ml" @@ -5166,13 +5166,13 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1006 "parsing/parser.mly" +# 1008 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) # 5172 "parsing/parser.ml" in -# 2071 "parsing/parser.mly" +# 2076 "parsing/parser.mly" ( Cstr.mk _1 _2 ) # 5178 "parsing/parser.ml" @@ -5180,7 +5180,7 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 5186 "parsing/parser.ml" @@ -5189,7 +5189,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2059 "parsing/parser.mly" +# 2064 "parsing/parser.mly" ( mkclass ~loc:_sloc ~attrs:_2 (Pcl_structure _3) ) # 5195 "parsing/parser.ml" : (Parsetree.class_expr)) @@ -5215,7 +5215,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = -# 2162 "parsing/parser.mly" +# 2167 "parsing/parser.mly" ( _1 ) # 5221 "parsing/parser.ml" in @@ -5264,12 +5264,12 @@ module Tables = struct let _1 = let _1 = let label = -# 3790 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( Optional label ) # 5270 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2173 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) # 5275 "parsing/parser.ml" @@ -5279,13 +5279,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 5285 "parsing/parser.ml" in ( -# 2169 "parsing/parser.mly" +# 2174 "parsing/parser.mly" ( _1 ) # 5291 "parsing/parser.ml" : (Parsetree.class_type)) @@ -5347,18 +5347,18 @@ module Tables = struct let _1 = let label = let _1 = -# 3796 "parsing/parser.mly" +# 3805 "parsing/parser.mly" ( Labelled label ) # 5353 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) # 5358 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2173 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) # 5364 "parsing/parser.ml" @@ -5368,13 +5368,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 5374 "parsing/parser.ml" in ( -# 2169 "parsing/parser.mly" +# 2174 "parsing/parser.mly" ( _1 ) # 5380 "parsing/parser.ml" : (Parsetree.class_type)) @@ -5418,18 +5418,18 @@ module Tables = struct let _1 = let label = let _1 = -# 3798 "parsing/parser.mly" +# 3807 "parsing/parser.mly" ( Nolabel ) # 5424 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) # 5429 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2173 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) # 5435 "parsing/parser.ml" @@ -5439,13 +5439,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1055 "parsing/parser.mly" +# 1057 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) # 5445 "parsing/parser.ml" in ( -# 2169 "parsing/parser.mly" +# 2174 "parsing/parser.mly" ( _1 ) # 5451 "parsing/parser.ml" : (Parsetree.class_type)) @@ -5550,7 +5550,7 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) # 5556 "parsing/parser.ml" @@ -5562,7 +5562,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 5568 "parsing/parser.ml" @@ -5570,7 +5570,7 @@ module Tables = struct let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 5576 "parsing/parser.ml" @@ -5579,7 +5579,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2308 "parsing/parser.mly" +# 2313 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -5591,13 +5591,13 @@ module Tables = struct in -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) # 5597 "parsing/parser.ml" in ( -# 2296 "parsing/parser.mly" +# 2301 "parsing/parser.mly" ( _1 ) # 5603 "parsing/parser.ml" : (string Asttypes.loc option * Parsetree.class_type_declaration list)) @@ -5623,7 +5623,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4171 "parsing/parser.mly" +# 4180 "parsing/parser.mly" ( _1 ) # 5629 "parsing/parser.ml" in @@ -5656,7 +5656,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4047 "parsing/parser.mly" +# 4056 "parsing/parser.mly" ( let (n, m) = _1 in mkconst ~loc:_sloc (Pconst_integer (n, m)) ) # 5663 "parsing/parser.ml" @@ -5691,7 +5691,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4049 "parsing/parser.mly" +# 4058 "parsing/parser.mly" ( mkconst ~loc:_sloc (Pconst_char _1) ) # 5697 "parsing/parser.ml" : (Parsetree.constant)) @@ -5725,7 +5725,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4050 "parsing/parser.mly" +# 4059 "parsing/parser.mly" ( let (s, strloc, d) = _1 in mkconst ~loc:_sloc (Pconst_string (s,strloc,d)) ) # 5732 "parsing/parser.ml" @@ -5760,7 +5760,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4052 "parsing/parser.mly" +# 4061 "parsing/parser.mly" ( let (f, m) = _1 in mkconst ~loc:_sloc (Pconst_float (f, m)) ) # 5767 "parsing/parser.ml" @@ -5794,7 +5794,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4128 "parsing/parser.mly" +# 4137 "parsing/parser.mly" ( "[]" ) # 5800 "parsing/parser.ml" in @@ -5826,7 +5826,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4129 "parsing/parser.mly" +# 4138 "parsing/parser.mly" ( "()" ) # 5832 "parsing/parser.ml" in @@ -5851,7 +5851,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4130 "parsing/parser.mly" +# 4139 "parsing/parser.mly" ( "false" ) # 5857 "parsing/parser.ml" in @@ -5876,7 +5876,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4131 "parsing/parser.mly" +# 4140 "parsing/parser.mly" ( "true" ) # 5882 "parsing/parser.ml" in @@ -5905,7 +5905,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4134 "parsing/parser.mly" +# 4143 "parsing/parser.mly" ( _1 ) # 5911 "parsing/parser.ml" in @@ -5945,12 +5945,12 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 4125 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( "::" ) # 5951 "parsing/parser.ml" in ( -# 4135 "parsing/parser.mly" +# 4144 "parsing/parser.mly" ( _1 ) # 5956 "parsing/parser.ml" : (Asttypes.label)) @@ -5976,7 +5976,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4136 "parsing/parser.mly" +# 4145 "parsing/parser.mly" ( _1 ) # 5982 "parsing/parser.ml" in @@ -6001,7 +6001,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4139 "parsing/parser.mly" +# 4148 "parsing/parser.mly" ( _1 ) # 6007 "parsing/parser.ml" in @@ -6055,7 +6055,7 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _3 = -# 4125 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( "::" ) # 6061 "parsing/parser.ml" in @@ -6063,7 +6063,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4140 "parsing/parser.mly" +# 4149 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) # 6069 "parsing/parser.ml" : (Longident.t)) @@ -6104,12 +6104,12 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 4125 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( "::" ) # 6110 "parsing/parser.ml" in ( -# 4141 "parsing/parser.mly" +# 4150 "parsing/parser.mly" ( Lident _1 ) # 6115 "parsing/parser.ml" : (Longident.t)) @@ -6135,7 +6135,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4142 "parsing/parser.mly" +# 4151 "parsing/parser.mly" ( Lident _1 ) # 6141 "parsing/parser.ml" in @@ -6174,7 +6174,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type * Parsetree.core_type) = -# 2252 "parsing/parser.mly" +# 2257 "parsing/parser.mly" ( _1, _3 ) # 6180 "parsing/parser.ml" in @@ -6202,7 +6202,7 @@ module Tables = struct let tys = let xs = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) # 6208 "parsing/parser.ml" in @@ -6213,13 +6213,13 @@ module Tables = struct in -# 1167 "parsing/parser.mly" +# 1169 "parsing/parser.mly" ( xs ) # 6219 "parsing/parser.ml" in ( -# 3548 "parsing/parser.mly" +# 3555 "parsing/parser.mly" ( Pcstr_tuple tys ) # 6225 "parsing/parser.ml" : (Parsetree.constructor_arguments)) @@ -6262,7 +6262,7 @@ module Tables = struct let tys = let xs = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) # 6268 "parsing/parser.ml" in @@ -6273,13 +6273,13 @@ module Tables = struct in -# 1167 "parsing/parser.mly" +# 1169 "parsing/parser.mly" ( xs ) # 6279 "parsing/parser.ml" in ( -# 3548 "parsing/parser.mly" +# 3555 "parsing/parser.mly" ( Pcstr_tuple tys ) # 6285 "parsing/parser.ml" : (Parsetree.constructor_arguments)) @@ -6319,7 +6319,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.constructor_arguments) = -# 3550 "parsing/parser.mly" +# 3557 "parsing/parser.mly" ( Pcstr_record _2 ) # 6325 "parsing/parser.ml" in @@ -6344,7 +6344,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constructor_declaration list) = -# 3471 "parsing/parser.mly" +# 3478 "parsing/parser.mly" ( [] ) # 6350 "parsing/parser.ml" in @@ -6370,12 +6370,12 @@ module Tables = struct let _endpos = _endpos_xs_ in let _v = let cs = -# 1252 "parsing/parser.mly" +# 1254 "parsing/parser.mly" ( List.rev xs ) # 6376 "parsing/parser.ml" in ( -# 3473 "parsing/parser.mly" +# 3480 "parsing/parser.mly" ( cs ) # 6381 "parsing/parser.ml" : (Parsetree.constructor_declaration list)) @@ -6402,12 +6402,12 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) # 6408 "parsing/parser.ml" in ( -# 3702 "parsing/parser.mly" +# 3711 "parsing/parser.mly" ( _1 ) # 6413 "parsing/parser.ml" : (Parsetree.core_type)) @@ -6440,7 +6440,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 3704 "parsing/parser.mly" +# 3713 "parsing/parser.mly" ( Typ.attr _1 _2 ) # 6446 "parsing/parser.ml" in @@ -6465,7 +6465,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3919 "parsing/parser.mly" +# 3928 "parsing/parser.mly" ( _1 ) # 6471 "parsing/parser.ml" in @@ -6490,7 +6490,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3919 "parsing/parser.mly" +# 3928 "parsing/parser.mly" ( _1 ) # 6496 "parsing/parser.ml" in @@ -6515,7 +6515,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3919 "parsing/parser.mly" +# 3928 "parsing/parser.mly" ( _1 ) # 6521 "parsing/parser.ml" in @@ -6554,7 +6554,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 3872 "parsing/parser.mly" +# 3881 "parsing/parser.mly" ( type_ ) # 6560 "parsing/parser.ml" in @@ -6620,7 +6620,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 6627 "parsing/parser.ml" @@ -6631,13 +6631,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 6637 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 6643 "parsing/parser.ml" @@ -6646,7 +6646,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3874 "parsing/parser.mly" +# 3883 "parsing/parser.mly" ( mktyp_attrs ~loc:_sloc (Ptyp_package package_type) ext_attrs ) # 6652 "parsing/parser.ml" : (Parsetree.core_type)) @@ -6688,7 +6688,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 3877 "parsing/parser.mly" +# 3886 "parsing/parser.mly" ( Ptyp_variant([ field ], Closed, None) ) # 6694 "parsing/parser.ml" in @@ -6697,13 +6697,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 6703 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 6709 "parsing/parser.ml" : (Parsetree.core_type)) @@ -6760,19 +6760,19 @@ module Tables = struct # 6761 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 6766 "parsing/parser.ml" in -# 3973 "parsing/parser.mly" +# 3982 "parsing/parser.mly" ( _1 ) # 6772 "parsing/parser.ml" in -# 3879 "parsing/parser.mly" +# 3888 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, None) ) # 6778 "parsing/parser.ml" @@ -6782,13 +6782,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 6788 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 6794 "parsing/parser.ml" : (Parsetree.core_type)) @@ -6852,19 +6852,19 @@ module Tables = struct # 6853 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 6858 "parsing/parser.ml" in -# 3973 "parsing/parser.mly" +# 3982 "parsing/parser.mly" ( _1 ) # 6864 "parsing/parser.ml" in -# 3881 "parsing/parser.mly" +# 3890 "parsing/parser.mly" ( Ptyp_variant(field :: fields, Closed, None) ) # 6870 "parsing/parser.ml" @@ -6874,13 +6874,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 6880 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 6886 "parsing/parser.ml" : (Parsetree.core_type)) @@ -6937,19 +6937,19 @@ module Tables = struct # 6938 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 6943 "parsing/parser.ml" in -# 3973 "parsing/parser.mly" +# 3982 "parsing/parser.mly" ( _1 ) # 6949 "parsing/parser.ml" in -# 3883 "parsing/parser.mly" +# 3892 "parsing/parser.mly" ( Ptyp_variant(fields, Open, None) ) # 6955 "parsing/parser.ml" @@ -6959,13 +6959,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 6965 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 6971 "parsing/parser.ml" : (Parsetree.core_type)) @@ -7000,7 +7000,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 3885 "parsing/parser.mly" +# 3894 "parsing/parser.mly" ( Ptyp_variant([], Open, None) ) # 7006 "parsing/parser.ml" in @@ -7009,13 +7009,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 7015 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 7021 "parsing/parser.ml" : (Parsetree.core_type)) @@ -7072,19 +7072,19 @@ module Tables = struct # 7073 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 7078 "parsing/parser.ml" in -# 3973 "parsing/parser.mly" +# 3982 "parsing/parser.mly" ( _1 ) # 7084 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, Some []) ) # 7090 "parsing/parser.ml" @@ -7094,13 +7094,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 7100 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 7106 "parsing/parser.ml" : (Parsetree.core_type)) @@ -7172,13 +7172,13 @@ module Tables = struct # 7173 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) # 7178 "parsing/parser.ml" in -# 4001 "parsing/parser.mly" +# 4010 "parsing/parser.mly" ( _1 ) # 7184 "parsing/parser.ml" @@ -7191,19 +7191,19 @@ module Tables = struct # 7192 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 7197 "parsing/parser.ml" in -# 3973 "parsing/parser.mly" +# 3982 "parsing/parser.mly" ( _1 ) # 7203 "parsing/parser.ml" in -# 3892 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, Some tags) ) # 7209 "parsing/parser.ml" @@ -7213,13 +7213,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 7219 "parsing/parser.ml" in ( -# 3894 "parsing/parser.mly" +# 3903 "parsing/parser.mly" ( _1 ) # 7225 "parsing/parser.ml" : (Parsetree.core_type)) @@ -7245,7 +7245,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4237 "parsing/parser.mly" +# 4246 "parsing/parser.mly" ( Upto ) # 7251 "parsing/parser.ml" in @@ -7270,7 +7270,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4238 "parsing/parser.mly" +# 4247 "parsing/parser.mly" ( Downto ) # 7276 "parsing/parser.ml" in @@ -7297,18 +7297,18 @@ module Tables = struct let _v = let e = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 7303 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7308 "parsing/parser.ml" in ( -# 1505 "parsing/parser.mly" +# 1510 "parsing/parser.mly" ( e ) # 7314 "parsing/parser.ml" : (Parsetree.expression)) @@ -7365,13 +7365,13 @@ module Tables = struct # 7366 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 7371 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 7377 "parsing/parser.ml" @@ -7382,13 +7382,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 7388 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 7394 "parsing/parser.ml" @@ -7397,7 +7397,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -7414,13 +7414,13 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7420 "parsing/parser.ml" in ( -# 1505 "parsing/parser.mly" +# 1510 "parsing/parser.mly" ( e ) # 7426 "parsing/parser.ml" : (Parsetree.expression)) @@ -7467,7 +7467,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7474 "parsing/parser.ml" @@ -7477,7 +7477,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7483 "parsing/parser.ml" @@ -7485,12 +7485,12 @@ module Tables = struct let _endpos_ty_ = _endpos__1_inlined1_ in let e = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 7491 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7496 "parsing/parser.ml" @@ -7500,7 +7500,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1507 "parsing/parser.mly" +# 1512 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_constraint (e, ty)) ) # 7506 "parsing/parser.ml" : (Parsetree.expression)) @@ -7568,7 +7568,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7575 "parsing/parser.ml" @@ -7578,7 +7578,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7584 "parsing/parser.ml" @@ -7594,13 +7594,13 @@ module Tables = struct # 7595 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 7600 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 7606 "parsing/parser.ml" @@ -7611,13 +7611,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 7617 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 7623 "parsing/parser.ml" @@ -7626,7 +7626,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -7643,7 +7643,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7649 "parsing/parser.ml" @@ -7653,7 +7653,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1507 "parsing/parser.mly" +# 1512 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_constraint (e, ty)) ) # 7659 "parsing/parser.ml" : (Parsetree.expression)) @@ -7714,7 +7714,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7721 "parsing/parser.ml" @@ -7724,7 +7724,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7730 "parsing/parser.ml" @@ -7737,7 +7737,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7744 "parsing/parser.ml" @@ -7747,19 +7747,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7753 "parsing/parser.ml" in let e = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 7760 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7765 "parsing/parser.ml" @@ -7769,7 +7769,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1509 "parsing/parser.mly" +# 1514 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) # 7775 "parsing/parser.ml" : (Parsetree.expression)) @@ -7851,7 +7851,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7858 "parsing/parser.ml" @@ -7861,7 +7861,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7867 "parsing/parser.ml" @@ -7874,7 +7874,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 7881 "parsing/parser.ml" @@ -7884,7 +7884,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 7890 "parsing/parser.ml" @@ -7899,13 +7899,13 @@ module Tables = struct # 7900 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 7905 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 7911 "parsing/parser.ml" @@ -7916,13 +7916,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 7922 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 7928 "parsing/parser.ml" @@ -7931,7 +7931,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -7948,7 +7948,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 7954 "parsing/parser.ml" @@ -7958,7 +7958,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1509 "parsing/parser.mly" +# 1514 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) # 7964 "parsing/parser.ml" : (Parsetree.expression)) @@ -8005,7 +8005,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 8012 "parsing/parser.ml" @@ -8015,7 +8015,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 8021 "parsing/parser.ml" @@ -8023,12 +8023,12 @@ module Tables = struct let _endpos_ty2_ = _endpos__1_inlined1_ in let e = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 8029 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 8034 "parsing/parser.ml" @@ -8038,7 +8038,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1511 "parsing/parser.mly" +# 1516 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) # 8044 "parsing/parser.ml" : (Parsetree.expression)) @@ -8106,7 +8106,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) # 8113 "parsing/parser.ml" @@ -8116,7 +8116,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) # 8122 "parsing/parser.ml" @@ -8132,13 +8132,13 @@ module Tables = struct # 8133 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 8138 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 8144 "parsing/parser.ml" @@ -8149,13 +8149,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8155 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 8161 "parsing/parser.ml" @@ -8164,7 +8164,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -8181,7 +8181,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 8187 "parsing/parser.ml" @@ -8191,7 +8191,7 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in ( -# 1511 "parsing/parser.mly" +# 1516 "parsing/parser.mly" ( mkexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) # 8197 "parsing/parser.ml" : (Parsetree.expression)) @@ -8210,7 +8210,7 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string Asttypes.loc option) = -# 4394 "parsing/parser.mly" +# 4403 "parsing/parser.mly" ( None ) # 8216 "parsing/parser.ml" in @@ -8242,7 +8242,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string Asttypes.loc option) = -# 4395 "parsing/parser.mly" +# 4404 "parsing/parser.mly" ( Some _2 ) # 8248 "parsing/parser.ml" in @@ -8288,7 +8288,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4407 "parsing/parser.mly" +# 4416 "parsing/parser.mly" ( (_2, _3) ) # 8294 "parsing/parser.ml" in @@ -8321,7 +8321,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4409 "parsing/parser.mly" +# 4418 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) # 8327 "parsing/parser.ml" : (Parsetree.extension)) @@ -8378,7 +8378,7 @@ module Tables = struct let attrs = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8384 "parsing/parser.ml" @@ -8390,7 +8390,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 8396 "parsing/parser.ml" @@ -8401,7 +8401,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 8407 "parsing/parser.ml" @@ -8410,7 +8410,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3618 "parsing/parser.mly" +# 3625 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) # 8417 "parsing/parser.ml" @@ -8461,7 +8461,7 @@ module Tables = struct let attrs = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8467 "parsing/parser.ml" @@ -8473,7 +8473,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 8479 "parsing/parser.ml" @@ -8483,14 +8483,14 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 8489 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4211 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( () ) # 8496 "parsing/parser.ml" in @@ -8498,7 +8498,7 @@ module Tables = struct let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3618 "parsing/parser.mly" +# 3625 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) # 8505 "parsing/parser.ml" @@ -8527,7 +8527,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 3910 "parsing/parser.mly" +# 3919 "parsing/parser.mly" ( Ptyp_extension ext ) # 8533 "parsing/parser.ml" in @@ -8536,13 +8536,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) # 8542 "parsing/parser.ml" in ( -# 3912 "parsing/parser.mly" +# 3921 "parsing/parser.mly" ( _1 ) # 8548 "parsing/parser.ml" : (Parsetree.core_type)) @@ -8593,7 +8593,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4382 "parsing/parser.mly" +# 4391 "parsing/parser.mly" ( mark_symbol_docs _sloc; mk_attr ~loc:(make_loc _sloc) _2 _3 ) # 8600 "parsing/parser.ml" @@ -8614,12 +8614,12 @@ module Tables = struct let _endpos = _startpos in let _v = let params = -# 2191 "parsing/parser.mly" +# 2196 "parsing/parser.mly" ( [] ) # 8620 "parsing/parser.ml" in ( -# 2016 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( params ) # 8625 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) @@ -8667,19 +8667,19 @@ module Tables = struct # 8668 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) # 8673 "parsing/parser.ml" in -# 2193 "parsing/parser.mly" +# 2198 "parsing/parser.mly" ( params ) # 8679 "parsing/parser.ml" in ( -# 2016 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( params ) # 8685 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) @@ -8734,13 +8734,13 @@ module Tables = struct # 8735 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 8740 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 8746 "parsing/parser.ml" @@ -8751,13 +8751,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8757 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 8763 "parsing/parser.ml" @@ -8766,7 +8766,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2821 "parsing/parser.mly" +# 2828 "parsing/parser.mly" ( let ext, attrs = _2 in match ext with | None -> Pfunction_cases (_3, make_loc _sloc, attrs) @@ -8800,7 +8800,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.function_body) = -# 2831 "parsing/parser.mly" +# 2838 "parsing/parser.mly" ( Pfunction_body _1 ) # 8806 "parsing/parser.ml" in @@ -8825,7 +8825,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2460 "parsing/parser.mly" +# 2465 "parsing/parser.mly" ( _1 ) # 8831 "parsing/parser.ml" in @@ -8891,19 +8891,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8897 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 8903 "parsing/parser.ml" in -# 2497 "parsing/parser.mly" +# 2498 "parsing/parser.mly" ( Pexp_struct_item(_3, _5), _2 ) # 8909 "parsing/parser.ml" @@ -8913,7 +8913,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 8920 "parsing/parser.ml" @@ -8988,19 +8988,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 8994 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9000 "parsing/parser.ml" in -# 2501 "parsing/parser.mly" +# 2502 "parsing/parser.mly" ( let body_constraint = Option.map (fun x -> Pconstraint x) _4 in mkfunction _3 body_constraint _6, _2 ) @@ -9012,7 +9012,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9019 "parsing/parser.ml" @@ -9083,13 +9083,13 @@ module Tables = struct # 9084 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 9089 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 9095 "parsing/parser.ml" @@ -9099,19 +9099,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9105 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9111 "parsing/parser.ml" in -# 2505 "parsing/parser.mly" +# 2506 "parsing/parser.mly" ( Pexp_match(_3, _5), _2 ) # 9117 "parsing/parser.ml" @@ -9121,7 +9121,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9128 "parsing/parser.ml" @@ -9192,13 +9192,13 @@ module Tables = struct # 9193 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 9198 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 9204 "parsing/parser.ml" @@ -9208,19 +9208,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9214 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9220 "parsing/parser.ml" in -# 2507 "parsing/parser.mly" +# 2508 "parsing/parser.mly" ( Pexp_try(_3, _5), _2 ) # 9226 "parsing/parser.ml" @@ -9230,7 +9230,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9237 "parsing/parser.ml" @@ -9298,19 +9298,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9304 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9310 "parsing/parser.ml" in -# 2509 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( syntax_error() ) # 9316 "parsing/parser.ml" @@ -9320,7 +9320,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9327 "parsing/parser.ml" @@ -9400,12 +9400,12 @@ module Tables = struct let _7 = let _1 = _1_inlined4 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 9406 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9411 "parsing/parser.ml" @@ -9413,12 +9413,12 @@ module Tables = struct let _5 = let _1 = _1_inlined3 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 9419 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9424 "parsing/parser.ml" @@ -9428,19 +9428,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9434 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9440 "parsing/parser.ml" in -# 2511 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) # 9446 "parsing/parser.ml" @@ -9450,7 +9450,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9457 "parsing/parser.ml" @@ -9559,13 +9559,13 @@ module Tables = struct # 9560 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 9565 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 9571 "parsing/parser.ml" @@ -9576,13 +9576,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9582 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9588 "parsing/parser.ml" @@ -9591,7 +9591,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -9608,7 +9608,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9614 "parsing/parser.ml" @@ -9616,12 +9616,12 @@ module Tables = struct let _5 = let _1 = _1_inlined3 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 9622 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9627 "parsing/parser.ml" @@ -9631,19 +9631,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9637 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9643 "parsing/parser.ml" in -# 2511 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) # 9649 "parsing/parser.ml" @@ -9653,7 +9653,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9660 "parsing/parser.ml" @@ -9754,12 +9754,12 @@ module Tables = struct let _7 = let _1 = _1_inlined6 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 9760 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9765 "parsing/parser.ml" @@ -9775,13 +9775,13 @@ module Tables = struct # 9776 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 9781 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 9787 "parsing/parser.ml" @@ -9792,13 +9792,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9798 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9804 "parsing/parser.ml" @@ -9807,7 +9807,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -9824,7 +9824,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 9830 "parsing/parser.ml" @@ -9834,19 +9834,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 9840 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 9846 "parsing/parser.ml" in -# 2511 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) # 9852 "parsing/parser.ml" @@ -9856,7 +9856,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 9863 "parsing/parser.ml" @@ -9986,13 +9986,13 @@ module Tables = struct # 9987 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 9992 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 9998 "parsing/parser.ml" @@ -10003,13 +10003,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10009 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10015 "parsing/parser.ml" @@ -10018,7 +10018,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -10035,7 +10035,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 10041 "parsing/parser.ml" @@ -10051,13 +10051,13 @@ module Tables = struct # 10052 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 10057 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 10063 "parsing/parser.ml" @@ -10068,13 +10068,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10074 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10080 "parsing/parser.ml" @@ -10083,7 +10083,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -10100,7 +10100,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 10106 "parsing/parser.ml" @@ -10110,19 +10110,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10116 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10122 "parsing/parser.ml" in -# 2511 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) # 10128 "parsing/parser.ml" @@ -10132,7 +10132,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10139 "parsing/parser.ml" @@ -10198,12 +10198,12 @@ module Tables = struct let _5 = let _1 = _1_inlined3 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 10204 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 10209 "parsing/parser.ml" @@ -10213,19 +10213,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10219 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10225 "parsing/parser.ml" in -# 2513 "parsing/parser.mly" +# 2514 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) # 10231 "parsing/parser.ml" @@ -10235,7 +10235,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10242 "parsing/parser.ml" @@ -10330,13 +10330,13 @@ module Tables = struct # 10331 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 10336 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 10342 "parsing/parser.ml" @@ -10347,13 +10347,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10353 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10359 "parsing/parser.ml" @@ -10362,7 +10362,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -10379,7 +10379,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 10385 "parsing/parser.ml" @@ -10389,19 +10389,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10395 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10401 "parsing/parser.ml" in -# 2513 "parsing/parser.mly" +# 2514 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) # 10407 "parsing/parser.ml" @@ -10411,7 +10411,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10418 "parsing/parser.ml" @@ -10482,7 +10482,7 @@ module Tables = struct let _v = let _1 = let _4 = -# 2526 "parsing/parser.mly" +# 2527 "parsing/parser.mly" ( e ) # 10488 "parsing/parser.ml" in @@ -10491,19 +10491,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10497 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10503 "parsing/parser.ml" in -# 2515 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( Pexp_while(_3, _4), _2 ) # 10509 "parsing/parser.ml" @@ -10513,7 +10513,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10520 "parsing/parser.ml" @@ -10588,7 +10588,7 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2528 "parsing/parser.mly" +# 2529 "parsing/parser.mly" ( unclosed "do" _loc__1_ "done" _loc__2_ ) # 10594 "parsing/parser.ml" @@ -10598,19 +10598,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10604 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10610 "parsing/parser.ml" in -# 2515 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( Pexp_while(_3, _4), _2 ) # 10616 "parsing/parser.ml" @@ -10620,7 +10620,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10627 "parsing/parser.ml" @@ -10719,7 +10719,7 @@ module Tables = struct let _v = let _1 = let _8 = -# 2526 "parsing/parser.mly" +# 2527 "parsing/parser.mly" ( e ) # 10725 "parsing/parser.ml" in @@ -10728,19 +10728,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10734 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10740 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2519 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _8), _2 ) # 10746 "parsing/parser.ml" @@ -10750,7 +10750,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10757 "parsing/parser.ml" @@ -10853,7 +10853,7 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2528 "parsing/parser.mly" +# 2529 "parsing/parser.mly" ( unclosed "do" _loc__1_ "done" _loc__2_ ) # 10859 "parsing/parser.ml" @@ -10863,19 +10863,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10869 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10875 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2519 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _8), _2 ) # 10881 "parsing/parser.ml" @@ -10885,7 +10885,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10892 "parsing/parser.ml" @@ -10939,19 +10939,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 10945 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 10951 "parsing/parser.ml" in -# 2520 "parsing/parser.mly" +# 2521 "parsing/parser.mly" ( Pexp_assert _3, _2 ) # 10957 "parsing/parser.ml" @@ -10961,7 +10961,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 10968 "parsing/parser.ml" @@ -11015,19 +11015,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 11021 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 11027 "parsing/parser.ml" in -# 2522 "parsing/parser.mly" +# 2523 "parsing/parser.mly" ( Pexp_lazy _3, _2 ) # 11033 "parsing/parser.ml" @@ -11037,7 +11037,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2462 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) # 11044 "parsing/parser.ml" @@ -11080,13 +11080,13 @@ module Tables = struct # 11081 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) # 11086 "parsing/parser.ml" in -# 2532 "parsing/parser.mly" +# 2533 "parsing/parser.mly" ( Pexp_apply(_1, _2) ) # 11092 "parsing/parser.ml" @@ -11096,13 +11096,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11102 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11108 "parsing/parser.ml" : (Parsetree.expression)) @@ -11137,13 +11137,13 @@ module Tables = struct # 11138 "parsing/parser.ml" in -# 2945 "parsing/parser.mly" +# 2952 "parsing/parser.mly" ( xs ) # 11143 "parsing/parser.ml" in -# 2534 "parsing/parser.mly" +# 2535 "parsing/parser.mly" ( Pexp_tuple(_1) ) # 11149 "parsing/parser.ml" @@ -11153,13 +11153,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11159 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11165 "parsing/parser.ml" : (Parsetree.expression)) @@ -11199,13 +11199,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 11205 "parsing/parser.ml" in -# 2536 "parsing/parser.mly" +# 2537 "parsing/parser.mly" ( Pexp_construct(_1, Some _2) ) # 11211 "parsing/parser.ml" @@ -11215,13 +11215,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11221 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11227 "parsing/parser.ml" : (Parsetree.expression)) @@ -11256,7 +11256,7 @@ module Tables = struct let _v = let _1 = let _1 = -# 2538 "parsing/parser.mly" +# 2539 "parsing/parser.mly" ( Pexp_variant(_1, Some _2) ) # 11262 "parsing/parser.ml" in @@ -11265,13 +11265,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11271 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11277 "parsing/parser.ml" : (Parsetree.expression)) @@ -11319,19 +11319,19 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 11325 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 11330 "parsing/parser.ml" in let op = let _1 = -# 4098 "parsing/parser.mly" +# 4107 "parsing/parser.mly" ( op ) # 11337 "parsing/parser.ml" in @@ -11340,13 +11340,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 11346 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 11352 "parsing/parser.ml" @@ -11356,13 +11356,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11362 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11368 "parsing/parser.ml" : (Parsetree.expression)) @@ -11439,13 +11439,13 @@ module Tables = struct # 11440 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 11445 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 11451 "parsing/parser.ml" @@ -11456,13 +11456,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 11462 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 11468 "parsing/parser.ml" @@ -11471,7 +11471,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11488,14 +11488,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 11494 "parsing/parser.ml" in let op = let _1 = -# 4098 "parsing/parser.mly" +# 4107 "parsing/parser.mly" ( op ) # 11501 "parsing/parser.ml" in @@ -11504,13 +11504,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 11510 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 11516 "parsing/parser.ml" @@ -11520,13 +11520,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11526 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11532 "parsing/parser.ml" : (Parsetree.expression)) @@ -11574,19 +11574,19 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 11580 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 11585 "parsing/parser.ml" in let op = let _1 = -# 4099 "parsing/parser.mly" +# 4108 "parsing/parser.mly" ( op ) # 11592 "parsing/parser.ml" in @@ -11595,13 +11595,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 11601 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 11607 "parsing/parser.ml" @@ -11611,13 +11611,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11617 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11623 "parsing/parser.ml" : (Parsetree.expression)) @@ -11694,13 +11694,13 @@ module Tables = struct # 11695 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 11700 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 11706 "parsing/parser.ml" @@ -11711,13 +11711,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 11717 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 11723 "parsing/parser.ml" @@ -11726,7 +11726,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11743,14 +11743,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 11749 "parsing/parser.ml" in let op = let _1 = -# 4099 "parsing/parser.mly" +# 4108 "parsing/parser.mly" ( op ) # 11756 "parsing/parser.ml" in @@ -11759,13 +11759,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 11765 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 11771 "parsing/parser.ml" @@ -11775,13 +11775,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11781 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11787 "parsing/parser.ml" : (Parsetree.expression)) @@ -11829,19 +11829,19 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 11835 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 11840 "parsing/parser.ml" in let op = let _1 = -# 4100 "parsing/parser.mly" +# 4109 "parsing/parser.mly" ( op ) # 11847 "parsing/parser.ml" in @@ -11850,13 +11850,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 11856 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 11862 "parsing/parser.ml" @@ -11866,13 +11866,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 11872 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 11878 "parsing/parser.ml" : (Parsetree.expression)) @@ -11949,13 +11949,13 @@ module Tables = struct # 11950 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 11955 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 11961 "parsing/parser.ml" @@ -11966,13 +11966,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 11972 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 11978 "parsing/parser.ml" @@ -11981,7 +11981,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11998,14 +11998,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12004 "parsing/parser.ml" in let op = let _1 = -# 4100 "parsing/parser.mly" +# 4109 "parsing/parser.mly" ( op ) # 12011 "parsing/parser.ml" in @@ -12014,13 +12014,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12020 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12026 "parsing/parser.ml" @@ -12030,13 +12030,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12036 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12042 "parsing/parser.ml" : (Parsetree.expression)) @@ -12084,19 +12084,19 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 12090 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12095 "parsing/parser.ml" in let op = let _1 = -# 4101 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( op ) # 12102 "parsing/parser.ml" in @@ -12105,13 +12105,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12111 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12117 "parsing/parser.ml" @@ -12121,13 +12121,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12127 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12133 "parsing/parser.ml" : (Parsetree.expression)) @@ -12204,13 +12204,13 @@ module Tables = struct # 12205 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 12210 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 12216 "parsing/parser.ml" @@ -12221,13 +12221,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 12227 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 12233 "parsing/parser.ml" @@ -12236,7 +12236,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12253,14 +12253,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12259 "parsing/parser.ml" in let op = let _1 = -# 4101 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( op ) # 12266 "parsing/parser.ml" in @@ -12269,13 +12269,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12275 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12281 "parsing/parser.ml" @@ -12285,13 +12285,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12291 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12297 "parsing/parser.ml" : (Parsetree.expression)) @@ -12339,19 +12339,19 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 12345 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12350 "parsing/parser.ml" in let op = let _1 = -# 4102 "parsing/parser.mly" +# 4111 "parsing/parser.mly" ( op ) # 12357 "parsing/parser.ml" in @@ -12360,13 +12360,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12366 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12372 "parsing/parser.ml" @@ -12376,13 +12376,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12382 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12388 "parsing/parser.ml" : (Parsetree.expression)) @@ -12459,13 +12459,13 @@ module Tables = struct # 12460 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 12465 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 12471 "parsing/parser.ml" @@ -12476,13 +12476,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 12482 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 12488 "parsing/parser.ml" @@ -12491,7 +12491,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12508,14 +12508,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12514 "parsing/parser.ml" in let op = let _1 = -# 4102 "parsing/parser.mly" +# 4111 "parsing/parser.mly" ( op ) # 12521 "parsing/parser.ml" in @@ -12524,13 +12524,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12530 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12536 "parsing/parser.ml" @@ -12540,13 +12540,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12546 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12552 "parsing/parser.ml" : (Parsetree.expression)) @@ -12591,19 +12591,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 12597 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12602 "parsing/parser.ml" in let op = let _1 = -# 4103 "parsing/parser.mly" +# 4112 "parsing/parser.mly" ("+") # 12609 "parsing/parser.ml" in @@ -12611,13 +12611,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12617 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12623 "parsing/parser.ml" @@ -12627,13 +12627,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12633 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12639 "parsing/parser.ml" : (Parsetree.expression)) @@ -12707,13 +12707,13 @@ module Tables = struct # 12708 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 12713 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 12719 "parsing/parser.ml" @@ -12724,13 +12724,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 12730 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 12736 "parsing/parser.ml" @@ -12739,7 +12739,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12756,14 +12756,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12762 "parsing/parser.ml" in let op = let _1 = -# 4103 "parsing/parser.mly" +# 4112 "parsing/parser.mly" ("+") # 12769 "parsing/parser.ml" in @@ -12771,13 +12771,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12777 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12783 "parsing/parser.ml" @@ -12787,13 +12787,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12793 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12799 "parsing/parser.ml" : (Parsetree.expression)) @@ -12838,19 +12838,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 12844 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 12849 "parsing/parser.ml" in let op = let _1 = -# 4104 "parsing/parser.mly" +# 4113 "parsing/parser.mly" ("+.") # 12856 "parsing/parser.ml" in @@ -12858,13 +12858,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 12864 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 12870 "parsing/parser.ml" @@ -12874,13 +12874,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 12880 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 12886 "parsing/parser.ml" : (Parsetree.expression)) @@ -12954,13 +12954,13 @@ module Tables = struct # 12955 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 12960 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 12966 "parsing/parser.ml" @@ -12971,13 +12971,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 12977 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 12983 "parsing/parser.ml" @@ -12986,7 +12986,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13003,14 +13003,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13009 "parsing/parser.ml" in let op = let _1 = -# 4104 "parsing/parser.mly" +# 4113 "parsing/parser.mly" ("+.") # 13016 "parsing/parser.ml" in @@ -13018,13 +13018,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13024 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13030 "parsing/parser.ml" @@ -13034,13 +13034,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13040 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13046 "parsing/parser.ml" : (Parsetree.expression)) @@ -13085,19 +13085,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 13091 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13096 "parsing/parser.ml" in let op = let _1 = -# 4105 "parsing/parser.mly" +# 4114 "parsing/parser.mly" ("+=") # 13103 "parsing/parser.ml" in @@ -13105,13 +13105,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13111 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13117 "parsing/parser.ml" @@ -13121,13 +13121,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13127 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13133 "parsing/parser.ml" : (Parsetree.expression)) @@ -13201,13 +13201,13 @@ module Tables = struct # 13202 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 13207 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 13213 "parsing/parser.ml" @@ -13218,13 +13218,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 13224 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 13230 "parsing/parser.ml" @@ -13233,7 +13233,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13250,14 +13250,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13256 "parsing/parser.ml" in let op = let _1 = -# 4105 "parsing/parser.mly" +# 4114 "parsing/parser.mly" ("+=") # 13263 "parsing/parser.ml" in @@ -13265,13 +13265,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13271 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13277 "parsing/parser.ml" @@ -13281,13 +13281,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13287 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13293 "parsing/parser.ml" : (Parsetree.expression)) @@ -13332,19 +13332,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 13338 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13343 "parsing/parser.ml" in let op = let _1 = -# 4106 "parsing/parser.mly" +# 4115 "parsing/parser.mly" ("-") # 13350 "parsing/parser.ml" in @@ -13352,13 +13352,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13358 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13364 "parsing/parser.ml" @@ -13368,13 +13368,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13374 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13380 "parsing/parser.ml" : (Parsetree.expression)) @@ -13448,13 +13448,13 @@ module Tables = struct # 13449 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 13454 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 13460 "parsing/parser.ml" @@ -13465,13 +13465,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 13471 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 13477 "parsing/parser.ml" @@ -13480,7 +13480,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13497,14 +13497,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13503 "parsing/parser.ml" in let op = let _1 = -# 4106 "parsing/parser.mly" +# 4115 "parsing/parser.mly" ("-") # 13510 "parsing/parser.ml" in @@ -13512,13 +13512,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13518 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13524 "parsing/parser.ml" @@ -13528,13 +13528,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13534 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13540 "parsing/parser.ml" : (Parsetree.expression)) @@ -13579,19 +13579,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 13585 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13590 "parsing/parser.ml" in let op = let _1 = -# 4107 "parsing/parser.mly" +# 4116 "parsing/parser.mly" ("-.") # 13597 "parsing/parser.ml" in @@ -13599,13 +13599,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13605 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13611 "parsing/parser.ml" @@ -13615,13 +13615,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13621 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13627 "parsing/parser.ml" : (Parsetree.expression)) @@ -13695,13 +13695,13 @@ module Tables = struct # 13696 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 13701 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 13707 "parsing/parser.ml" @@ -13712,13 +13712,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 13718 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 13724 "parsing/parser.ml" @@ -13727,7 +13727,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13744,14 +13744,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13750 "parsing/parser.ml" in let op = let _1 = -# 4107 "parsing/parser.mly" +# 4116 "parsing/parser.mly" ("-.") # 13757 "parsing/parser.ml" in @@ -13759,13 +13759,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13765 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13771 "parsing/parser.ml" @@ -13775,13 +13775,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13781 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13787 "parsing/parser.ml" : (Parsetree.expression)) @@ -13826,19 +13826,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 13832 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13837 "parsing/parser.ml" in let op = let _1 = -# 4108 "parsing/parser.mly" +# 4117 "parsing/parser.mly" ("*") # 13844 "parsing/parser.ml" in @@ -13846,13 +13846,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 13852 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 13858 "parsing/parser.ml" @@ -13862,13 +13862,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 13868 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 13874 "parsing/parser.ml" : (Parsetree.expression)) @@ -13942,13 +13942,13 @@ module Tables = struct # 13943 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 13948 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 13954 "parsing/parser.ml" @@ -13959,13 +13959,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 13965 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 13971 "parsing/parser.ml" @@ -13974,7 +13974,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13991,14 +13991,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 13997 "parsing/parser.ml" in let op = let _1 = -# 4108 "parsing/parser.mly" +# 4117 "parsing/parser.mly" ("*") # 14004 "parsing/parser.ml" in @@ -14006,13 +14006,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14012 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14018 "parsing/parser.ml" @@ -14022,13 +14022,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14028 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14034 "parsing/parser.ml" : (Parsetree.expression)) @@ -14073,19 +14073,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 14079 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14084 "parsing/parser.ml" in let op = let _1 = -# 4109 "parsing/parser.mly" +# 4118 "parsing/parser.mly" ("%") # 14091 "parsing/parser.ml" in @@ -14093,13 +14093,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14099 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14105 "parsing/parser.ml" @@ -14109,13 +14109,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14115 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14121 "parsing/parser.ml" : (Parsetree.expression)) @@ -14189,13 +14189,13 @@ module Tables = struct # 14190 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 14195 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 14201 "parsing/parser.ml" @@ -14206,13 +14206,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 14212 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 14218 "parsing/parser.ml" @@ -14221,7 +14221,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14238,14 +14238,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14244 "parsing/parser.ml" in let op = let _1 = -# 4109 "parsing/parser.mly" +# 4118 "parsing/parser.mly" ("%") # 14251 "parsing/parser.ml" in @@ -14253,13 +14253,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14259 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14265 "parsing/parser.ml" @@ -14269,13 +14269,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14275 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14281 "parsing/parser.ml" : (Parsetree.expression)) @@ -14320,19 +14320,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 14326 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14331 "parsing/parser.ml" in let op = let _1 = -# 4110 "parsing/parser.mly" +# 4119 "parsing/parser.mly" ("=") # 14338 "parsing/parser.ml" in @@ -14340,13 +14340,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14346 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14352 "parsing/parser.ml" @@ -14356,13 +14356,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14362 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14368 "parsing/parser.ml" : (Parsetree.expression)) @@ -14436,13 +14436,13 @@ module Tables = struct # 14437 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 14442 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 14448 "parsing/parser.ml" @@ -14453,13 +14453,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 14459 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 14465 "parsing/parser.ml" @@ -14468,7 +14468,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14485,14 +14485,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14491 "parsing/parser.ml" in let op = let _1 = -# 4110 "parsing/parser.mly" +# 4119 "parsing/parser.mly" ("=") # 14498 "parsing/parser.ml" in @@ -14500,13 +14500,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14506 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14512 "parsing/parser.ml" @@ -14516,13 +14516,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14522 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14528 "parsing/parser.ml" : (Parsetree.expression)) @@ -14567,19 +14567,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 14573 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14578 "parsing/parser.ml" in let op = let _1 = -# 4111 "parsing/parser.mly" +# 4120 "parsing/parser.mly" ("<") # 14585 "parsing/parser.ml" in @@ -14587,13 +14587,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14593 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14599 "parsing/parser.ml" @@ -14603,13 +14603,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14609 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14615 "parsing/parser.ml" : (Parsetree.expression)) @@ -14683,13 +14683,13 @@ module Tables = struct # 14684 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 14689 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 14695 "parsing/parser.ml" @@ -14700,13 +14700,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 14706 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 14712 "parsing/parser.ml" @@ -14715,7 +14715,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14732,14 +14732,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14738 "parsing/parser.ml" in let op = let _1 = -# 4111 "parsing/parser.mly" +# 4120 "parsing/parser.mly" ("<") # 14745 "parsing/parser.ml" in @@ -14747,13 +14747,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14753 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14759 "parsing/parser.ml" @@ -14763,13 +14763,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14769 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14775 "parsing/parser.ml" : (Parsetree.expression)) @@ -14814,19 +14814,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 14820 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14825 "parsing/parser.ml" in let op = let _1 = -# 4112 "parsing/parser.mly" +# 4121 "parsing/parser.mly" (">") # 14832 "parsing/parser.ml" in @@ -14834,13 +14834,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 14840 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 14846 "parsing/parser.ml" @@ -14850,13 +14850,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 14856 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 14862 "parsing/parser.ml" : (Parsetree.expression)) @@ -14930,13 +14930,13 @@ module Tables = struct # 14931 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 14936 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 14942 "parsing/parser.ml" @@ -14947,13 +14947,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 14953 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 14959 "parsing/parser.ml" @@ -14962,7 +14962,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14979,14 +14979,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 14985 "parsing/parser.ml" in let op = let _1 = -# 4112 "parsing/parser.mly" +# 4121 "parsing/parser.mly" (">") # 14992 "parsing/parser.ml" in @@ -14994,13 +14994,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15000 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15006 "parsing/parser.ml" @@ -15010,13 +15010,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15016 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15022 "parsing/parser.ml" : (Parsetree.expression)) @@ -15061,19 +15061,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 15067 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15072 "parsing/parser.ml" in let op = let _1 = -# 4113 "parsing/parser.mly" +# 4122 "parsing/parser.mly" ("or") # 15079 "parsing/parser.ml" in @@ -15081,13 +15081,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15087 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15093 "parsing/parser.ml" @@ -15097,13 +15097,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15103 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15109 "parsing/parser.ml" : (Parsetree.expression)) @@ -15177,13 +15177,13 @@ module Tables = struct # 15178 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 15183 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 15189 "parsing/parser.ml" @@ -15194,13 +15194,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 15200 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 15206 "parsing/parser.ml" @@ -15209,7 +15209,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15226,14 +15226,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15232 "parsing/parser.ml" in let op = let _1 = -# 4113 "parsing/parser.mly" +# 4122 "parsing/parser.mly" ("or") # 15239 "parsing/parser.ml" in @@ -15241,13 +15241,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15247 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15253 "parsing/parser.ml" @@ -15257,13 +15257,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15263 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15269 "parsing/parser.ml" : (Parsetree.expression)) @@ -15308,19 +15308,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 15314 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15319 "parsing/parser.ml" in let op = let _1 = -# 4114 "parsing/parser.mly" +# 4123 "parsing/parser.mly" ("||") # 15326 "parsing/parser.ml" in @@ -15328,13 +15328,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15334 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15340 "parsing/parser.ml" @@ -15344,13 +15344,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15350 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15356 "parsing/parser.ml" : (Parsetree.expression)) @@ -15424,13 +15424,13 @@ module Tables = struct # 15425 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 15430 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 15436 "parsing/parser.ml" @@ -15441,13 +15441,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 15447 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 15453 "parsing/parser.ml" @@ -15456,7 +15456,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15473,14 +15473,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15479 "parsing/parser.ml" in let op = let _1 = -# 4114 "parsing/parser.mly" +# 4123 "parsing/parser.mly" ("||") # 15486 "parsing/parser.ml" in @@ -15488,13 +15488,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15494 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15500 "parsing/parser.ml" @@ -15504,13 +15504,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15510 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15516 "parsing/parser.ml" : (Parsetree.expression)) @@ -15555,19 +15555,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 15561 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15566 "parsing/parser.ml" in let op = let _1 = -# 4115 "parsing/parser.mly" +# 4124 "parsing/parser.mly" ("&") # 15573 "parsing/parser.ml" in @@ -15575,13 +15575,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15581 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15587 "parsing/parser.ml" @@ -15591,13 +15591,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15597 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15603 "parsing/parser.ml" : (Parsetree.expression)) @@ -15671,13 +15671,13 @@ module Tables = struct # 15672 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 15677 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 15683 "parsing/parser.ml" @@ -15688,13 +15688,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 15694 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 15700 "parsing/parser.ml" @@ -15703,7 +15703,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15720,14 +15720,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15726 "parsing/parser.ml" in let op = let _1 = -# 4115 "parsing/parser.mly" +# 4124 "parsing/parser.mly" ("&") # 15733 "parsing/parser.ml" in @@ -15735,13 +15735,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15741 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15747 "parsing/parser.ml" @@ -15751,13 +15751,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15757 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15763 "parsing/parser.ml" : (Parsetree.expression)) @@ -15802,19 +15802,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 15808 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15813 "parsing/parser.ml" in let op = let _1 = -# 4116 "parsing/parser.mly" +# 4125 "parsing/parser.mly" ("&&") # 15820 "parsing/parser.ml" in @@ -15822,13 +15822,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15828 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15834 "parsing/parser.ml" @@ -15838,13 +15838,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 15844 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 15850 "parsing/parser.ml" : (Parsetree.expression)) @@ -15918,13 +15918,13 @@ module Tables = struct # 15919 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 15924 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 15930 "parsing/parser.ml" @@ -15935,13 +15935,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 15941 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 15947 "parsing/parser.ml" @@ -15950,7 +15950,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15967,14 +15967,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 15973 "parsing/parser.ml" in let op = let _1 = -# 4116 "parsing/parser.mly" +# 4125 "parsing/parser.mly" ("&&") # 15980 "parsing/parser.ml" in @@ -15982,13 +15982,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 15988 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 15994 "parsing/parser.ml" @@ -15998,13 +15998,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16004 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16010 "parsing/parser.ml" : (Parsetree.expression)) @@ -16049,19 +16049,19 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 16055 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16060 "parsing/parser.ml" in let op = let _1 = -# 4117 "parsing/parser.mly" +# 4126 "parsing/parser.mly" (":=") # 16067 "parsing/parser.ml" in @@ -16069,13 +16069,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 16075 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 16081 "parsing/parser.ml" @@ -16085,13 +16085,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16091 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16097 "parsing/parser.ml" : (Parsetree.expression)) @@ -16165,13 +16165,13 @@ module Tables = struct # 16166 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 16171 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 16177 "parsing/parser.ml" @@ -16182,13 +16182,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 16188 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 16194 "parsing/parser.ml" @@ -16197,7 +16197,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16214,14 +16214,14 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16220 "parsing/parser.ml" in let op = let _1 = -# 4117 "parsing/parser.mly" +# 4126 "parsing/parser.mly" (":=") # 16227 "parsing/parser.ml" in @@ -16229,13 +16229,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) # 16235 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( mkinfix e1 op e2 ) # 16241 "parsing/parser.ml" @@ -16245,13 +16245,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16251 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16257 "parsing/parser.ml" : (Parsetree.expression)) @@ -16289,12 +16289,12 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 16295 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16300 "parsing/parser.ml" @@ -16305,7 +16305,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2542 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( mkuminus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) # 16311 "parsing/parser.ml" @@ -16315,13 +16315,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16321 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16327 "parsing/parser.ml" : (Parsetree.expression)) @@ -16388,13 +16388,13 @@ module Tables = struct # 16389 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 16394 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 16400 "parsing/parser.ml" @@ -16405,13 +16405,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 16411 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 16417 "parsing/parser.ml" @@ -16420,7 +16420,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16437,7 +16437,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16443 "parsing/parser.ml" @@ -16448,7 +16448,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2542 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( mkuminus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) # 16454 "parsing/parser.ml" @@ -16458,13 +16458,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16464 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16470 "parsing/parser.ml" : (Parsetree.expression)) @@ -16502,12 +16502,12 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 16508 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16513 "parsing/parser.ml" @@ -16518,7 +16518,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2544 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( mkuplus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) # 16524 "parsing/parser.ml" @@ -16528,13 +16528,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16534 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16540 "parsing/parser.ml" : (Parsetree.expression)) @@ -16601,13 +16601,13 @@ module Tables = struct # 16602 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 16607 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 16613 "parsing/parser.ml" @@ -16618,13 +16618,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 16624 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 16630 "parsing/parser.ml" @@ -16633,7 +16633,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16650,7 +16650,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16656 "parsing/parser.ml" @@ -16661,7 +16661,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2544 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( mkuplus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) # 16667 "parsing/parser.ml" @@ -16671,13 +16671,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) # 16677 "parsing/parser.ml" in ( -# 2465 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( _1 ) # 16683 "parsing/parser.ml" : (Parsetree.expression)) @@ -16721,7 +16721,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2467 "parsing/parser.mly" +# 2472 "parsing/parser.mly" ( expr_of_let_bindings ~loc:_sloc _1 _3 ) # 16727 "parsing/parser.ml" : (Parsetree.expression)) @@ -16777,7 +16777,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 16783 "parsing/parser.ml" @@ -16787,7 +16787,7 @@ module Tables = struct let _symbolstartpos = _startpos_pbop_op_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2469 "parsing/parser.mly" +# 2474 "parsing/parser.mly" ( let (pbop_pat, pbop_exp, rev_ands) = bindings in let ands = List.rev rev_ands in let pbop_loc = make_loc _sloc in @@ -16834,12 +16834,12 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 16840 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16845 "parsing/parser.ml" @@ -16850,7 +16850,7 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 2475 "parsing/parser.mly" +# 2480 "parsing/parser.mly" ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[None,_1;None,_3])) ) # 16857 "parsing/parser.ml" @@ -16923,13 +16923,13 @@ module Tables = struct # 16924 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 16929 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 16935 "parsing/parser.ml" @@ -16940,13 +16940,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 16946 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 16952 "parsing/parser.ml" @@ -16955,7 +16955,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16972,7 +16972,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 16978 "parsing/parser.ml" @@ -16983,7 +16983,7 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 2475 "parsing/parser.mly" +# 2480 "parsing/parser.mly" ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[None,_1;None,_3])) ) # 16990 "parsing/parser.ml" @@ -17031,12 +17031,12 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 17037 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17042 "parsing/parser.ml" @@ -17044,7 +17044,7 @@ module Tables = struct let _endpos__3_ = _endpos__1_inlined1_ in let _1 = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) # 17050 "parsing/parser.ml" in @@ -17052,7 +17052,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 17058 "parsing/parser.ml" @@ -17061,7 +17061,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2478 "parsing/parser.mly" +# 2483 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) # 17067 "parsing/parser.ml" : (Parsetree.expression)) @@ -17137,13 +17137,13 @@ module Tables = struct # 17138 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 17143 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 17149 "parsing/parser.ml" @@ -17154,13 +17154,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 17160 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 17166 "parsing/parser.ml" @@ -17169,7 +17169,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17186,7 +17186,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17192 "parsing/parser.ml" @@ -17194,7 +17194,7 @@ module Tables = struct let _endpos__3_ = _endpos_xs_ in let _1 = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) # 17200 "parsing/parser.ml" in @@ -17202,7 +17202,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 17208 "parsing/parser.ml" @@ -17211,7 +17211,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2478 "parsing/parser.mly" +# 2483 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) # 17217 "parsing/parser.ml" : (Parsetree.expression)) @@ -17268,12 +17268,12 @@ module Tables = struct let _5 = let _1 = _1_inlined2 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 17274 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17279 "parsing/parser.ml" @@ -17285,7 +17285,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 17291 "parsing/parser.ml" @@ -17294,7 +17294,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2480 "parsing/parser.mly" +# 2485 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) # 17300 "parsing/parser.ml" : (Parsetree.expression)) @@ -17380,13 +17380,13 @@ module Tables = struct # 17381 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 17386 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 17392 "parsing/parser.ml" @@ -17397,13 +17397,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 17403 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 17409 "parsing/parser.ml" @@ -17412,7 +17412,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17429,7 +17429,7 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17435 "parsing/parser.ml" @@ -17441,7 +17441,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) # 17447 "parsing/parser.ml" @@ -17450,7 +17450,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2480 "parsing/parser.mly" +# 2485 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) # 17456 "parsing/parser.ml" : (Parsetree.expression)) @@ -17523,24 +17523,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 17529 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17534 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 17540 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 17546 "parsing/parser.ml" @@ -17550,7 +17550,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 17556 "parsing/parser.ml" : (Parsetree.expression)) @@ -17652,13 +17652,13 @@ module Tables = struct # 17653 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 17658 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 17664 "parsing/parser.ml" @@ -17669,13 +17669,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 17675 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 17681 "parsing/parser.ml" @@ -17684,7 +17684,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17701,19 +17701,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17707 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 17713 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 17719 "parsing/parser.ml" @@ -17723,7 +17723,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 17729 "parsing/parser.ml" : (Parsetree.expression)) @@ -17796,24 +17796,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 17802 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17807 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 17813 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 17819 "parsing/parser.ml" @@ -17823,7 +17823,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 17829 "parsing/parser.ml" : (Parsetree.expression)) @@ -17925,13 +17925,13 @@ module Tables = struct # 17926 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 17931 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 17937 "parsing/parser.ml" @@ -17942,13 +17942,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 17948 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 17954 "parsing/parser.ml" @@ -17957,7 +17957,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17974,19 +17974,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 17980 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 17986 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 17992 "parsing/parser.ml" @@ -17996,7 +17996,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 18002 "parsing/parser.ml" : (Parsetree.expression)) @@ -18069,24 +18069,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 18075 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18080 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 18086 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 18092 "parsing/parser.ml" @@ -18096,7 +18096,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 18102 "parsing/parser.ml" : (Parsetree.expression)) @@ -18198,13 +18198,13 @@ module Tables = struct # 18199 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 18204 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 18210 "parsing/parser.ml" @@ -18215,13 +18215,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 18221 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 18227 "parsing/parser.ml" @@ -18230,7 +18230,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18247,19 +18247,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18253 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2486 "parsing/parser.mly" (Some v) # 18259 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 18265 "parsing/parser.ml" @@ -18269,7 +18269,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2482 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) # 18275 "parsing/parser.ml" : (Parsetree.expression)) @@ -18346,24 +18346,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 18352 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18357 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 18363 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 18369 "parsing/parser.ml" in @@ -18374,13 +18374,13 @@ module Tables = struct # 18375 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 18380 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 18386 "parsing/parser.ml" @@ -18390,7 +18390,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 18396 "parsing/parser.ml" : (Parsetree.expression)) @@ -18496,13 +18496,13 @@ module Tables = struct # 18497 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 18502 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 18508 "parsing/parser.ml" @@ -18513,13 +18513,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 18519 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 18525 "parsing/parser.ml" @@ -18528,7 +18528,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18545,19 +18545,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18551 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 18557 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 18563 "parsing/parser.ml" in @@ -18568,13 +18568,13 @@ module Tables = struct # 18569 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 18574 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 18580 "parsing/parser.ml" @@ -18584,7 +18584,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 18590 "parsing/parser.ml" : (Parsetree.expression)) @@ -18676,24 +18676,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 18682 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18687 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 18693 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 18699 "parsing/parser.ml" in @@ -18701,7 +18701,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 18707 "parsing/parser.ml" in @@ -18712,13 +18712,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 18718 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 18724 "parsing/parser.ml" @@ -18728,7 +18728,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 18734 "parsing/parser.ml" : (Parsetree.expression)) @@ -18849,13 +18849,13 @@ module Tables = struct # 18850 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 18855 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 18861 "parsing/parser.ml" @@ -18866,13 +18866,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 18872 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 18878 "parsing/parser.ml" @@ -18881,7 +18881,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18898,19 +18898,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 18904 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 18910 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 18916 "parsing/parser.ml" in @@ -18918,7 +18918,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 18924 "parsing/parser.ml" in @@ -18929,13 +18929,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 18935 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) # 18941 "parsing/parser.ml" @@ -18945,7 +18945,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 18951 "parsing/parser.ml" : (Parsetree.expression)) @@ -19022,24 +19022,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 19028 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19033 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19039 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19045 "parsing/parser.ml" in @@ -19050,13 +19050,13 @@ module Tables = struct # 19051 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19056 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 19062 "parsing/parser.ml" @@ -19066,7 +19066,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19072 "parsing/parser.ml" : (Parsetree.expression)) @@ -19172,13 +19172,13 @@ module Tables = struct # 19173 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 19178 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 19184 "parsing/parser.ml" @@ -19189,13 +19189,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 19195 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 19201 "parsing/parser.ml" @@ -19204,7 +19204,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19221,19 +19221,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19227 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19233 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19239 "parsing/parser.ml" in @@ -19244,13 +19244,13 @@ module Tables = struct # 19245 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19250 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 19256 "parsing/parser.ml" @@ -19260,7 +19260,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19266 "parsing/parser.ml" : (Parsetree.expression)) @@ -19352,24 +19352,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 19358 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19363 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19369 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19375 "parsing/parser.ml" in @@ -19377,7 +19377,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 19383 "parsing/parser.ml" in @@ -19388,13 +19388,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19394 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 19400 "parsing/parser.ml" @@ -19404,7 +19404,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19410 "parsing/parser.ml" : (Parsetree.expression)) @@ -19525,13 +19525,13 @@ module Tables = struct # 19526 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 19531 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 19537 "parsing/parser.ml" @@ -19542,13 +19542,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 19548 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 19554 "parsing/parser.ml" @@ -19557,7 +19557,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19574,19 +19574,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19580 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19586 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19592 "parsing/parser.ml" in @@ -19594,7 +19594,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 19600 "parsing/parser.ml" in @@ -19605,13 +19605,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19611 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) # 19617 "parsing/parser.ml" @@ -19621,7 +19621,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19627 "parsing/parser.ml" : (Parsetree.expression)) @@ -19698,24 +19698,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 19704 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19709 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19715 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19721 "parsing/parser.ml" in @@ -19726,13 +19726,13 @@ module Tables = struct # 19727 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19732 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 19738 "parsing/parser.ml" @@ -19742,7 +19742,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19748 "parsing/parser.ml" : (Parsetree.expression)) @@ -19848,13 +19848,13 @@ module Tables = struct # 19849 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 19854 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 19860 "parsing/parser.ml" @@ -19865,13 +19865,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 19871 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 19877 "parsing/parser.ml" @@ -19880,7 +19880,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19897,19 +19897,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 19903 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 19909 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 19915 "parsing/parser.ml" in @@ -19920,13 +19920,13 @@ module Tables = struct # 19921 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 19926 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 19932 "parsing/parser.ml" @@ -19936,7 +19936,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 19942 "parsing/parser.ml" : (Parsetree.expression)) @@ -20028,24 +20028,24 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) # 20034 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 20039 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 20045 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 20051 "parsing/parser.ml" in @@ -20053,7 +20053,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 20059 "parsing/parser.ml" in @@ -20064,13 +20064,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 20070 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 20076 "parsing/parser.ml" @@ -20080,7 +20080,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 20086 "parsing/parser.ml" : (Parsetree.expression)) @@ -20201,13 +20201,13 @@ module Tables = struct # 20202 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) # 20207 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) # 20213 "parsing/parser.ml" @@ -20218,13 +20218,13 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) # 20224 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) # 20230 "parsing/parser.ml" @@ -20233,7 +20233,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -20250,19 +20250,19 @@ module Tables = struct in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) # 20256 "parsing/parser.ml" in -# 2483 "parsing/parser.mly" +# 2488 "parsing/parser.mly" (Some v) # 20262 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) # 20268 "parsing/parser.ml" in @@ -20270,7 +20270,7 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) # 20276 "parsing/parser.ml" in @@ -20281,13 +20281,13 @@ module Tables = struct in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) # 20287 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) # 20293 "parsing/parser.ml" @@ -20297,7 +20297,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2484 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) # 20303 "parsing/parser.ml" : (Parsetree.expression)) @@ -20330,7 +20330,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2486 "parsing/parser.mly" +# 2491 "parsing/parser.mly" ( Exp.attr _1 _2 ) # 20336 "parsing/parser.ml" in @@ -20341,34 +20341,6 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _loc__1_ = (_startpos__1_, _endpos__1_) in - ( -# 2489 "parsing/parser.mly" - ( not_expecting _loc__1_ "wildcard \"_\"" ) -# 20363 "parsing/parser.ml" - : (Parsetree.expression)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { @@ -20405,15 +20377,15 @@ module Tables = struct let _endpos = _endpos__4_ in let _v = let ty_params = -# 2716 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( xs ) -# 20411 "parsing/parser.ml" +# 20383 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2847 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( (* We desugar (type a b c) to (type a) (type b) (type c). If we do this desugaring, the loc for each parameter is a ghost. *) @@ -20427,7 +20399,7 @@ module Tables = struct (fun x -> { pparam_loc = loc; pparam_desc = Pparam_newtype x }) ty_params ) -# 20431 "parsing/parser.ml" +# 20403 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20455,11 +20427,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2861 "parsing/parser.mly" +# 2868 "parsing/parser.mly" ( let a, b, c = _1 in [ { pparam_loc = make_loc _sloc; pparam_desc = Pparam_val (a, b, c) } ] ) -# 20463 "parsing/parser.ml" +# 20435 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20487,18 +20459,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 20491 "parsing/parser.ml" +# 20463 "parsing/parser.ml" in -# 1131 "parsing/parser.mly" +# 1133 "parsing/parser.mly" ( xs ) -# 20496 "parsing/parser.ml" +# 20468 "parsing/parser.ml" in ( -# 2866 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( _1 ) -# 20502 "parsing/parser.ml" +# 20474 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20522,9 +20494,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2365 "parsing/parser.mly" +# 2370 "parsing/parser.mly" ( _1 ) -# 20528 "parsing/parser.ml" +# 20500 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20554,9 +20526,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2366 "parsing/parser.mly" +# 2371 "parsing/parser.mly" ( _1 ) -# 20560 "parsing/parser.ml" +# 20532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20595,24 +20567,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2368 "parsing/parser.mly" +# 2373 "parsing/parser.mly" ( Pexp_sequence(_1, _3) ) -# 20601 "parsing/parser.ml" +# 20573 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 20610 "parsing/parser.ml" +# 20582 "parsing/parser.ml" in ( -# 2369 "parsing/parser.mly" +# 2374 "parsing/parser.mly" ( _1 ) -# 20616 "parsing/parser.ml" +# 20588 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20668,9 +20640,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2371 "parsing/parser.mly" +# 2376 "parsing/parser.mly" ( mkexp_attrs ~loc:_sloc (Pexp_sequence (_1, _5)) (Some _4, []) ) -# 20674 "parsing/parser.ml" +# 20646 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20694,9 +20666,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3738 "parsing/parser.mly" +# 3747 "parsing/parser.mly" ( ty ) -# 20700 "parsing/parser.ml" +# 20672 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20782,24 +20754,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 20786 "parsing/parser.ml" +# 20758 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 20791 "parsing/parser.ml" +# 20763 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 20797 "parsing/parser.ml" +# 20769 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 20803 "parsing/parser.ml" +# 20775 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -20807,42 +20779,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20813 "parsing/parser.ml" +# 20785 "parsing/parser.ml" in -# 3683 "parsing/parser.mly" +# 3692 "parsing/parser.mly" ( _1 ) -# 20819 "parsing/parser.ml" +# 20791 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3802 "parsing/parser.mly" +# 3811 "parsing/parser.mly" ( reloc_typ ~loc:_sloc _2 ) -# 20828 "parsing/parser.ml" +# 20800 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 20835 "parsing/parser.ml" +# 20807 "parsing/parser.ml" in let label = -# 3790 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( Optional label ) -# 20841 "parsing/parser.ml" +# 20813 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 20846 "parsing/parser.ml" +# 20818 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -20850,15 +20822,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20856 "parsing/parser.ml" +# 20828 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 20862 "parsing/parser.ml" +# 20834 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -20907,26 +20879,26 @@ module Tables = struct let _1 = let domain = let _1 = -# 3804 "parsing/parser.mly" +# 3813 "parsing/parser.mly" ( ty ) -# 20913 "parsing/parser.ml" +# 20885 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 20919 "parsing/parser.ml" +# 20891 "parsing/parser.ml" in let label = -# 3790 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( Optional label ) -# 20925 "parsing/parser.ml" +# 20897 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 20930 "parsing/parser.ml" +# 20902 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -20934,15 +20906,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20940 "parsing/parser.ml" +# 20912 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 20946 "parsing/parser.ml" +# 20918 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21020,7 +20992,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 21024 "parsing/parser.ml" +# 20996 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -21040,24 +21012,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21044 "parsing/parser.ml" +# 21016 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 21049 "parsing/parser.ml" +# 21021 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 21055 "parsing/parser.ml" +# 21027 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 21061 "parsing/parser.ml" +# 21033 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -21065,49 +21037,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21071 "parsing/parser.ml" +# 21043 "parsing/parser.ml" in -# 3683 "parsing/parser.mly" +# 3692 "parsing/parser.mly" ( _1 ) -# 21077 "parsing/parser.ml" +# 21049 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3802 "parsing/parser.mly" +# 3811 "parsing/parser.mly" ( reloc_typ ~loc:_sloc _2 ) -# 21086 "parsing/parser.ml" +# 21058 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 21093 "parsing/parser.ml" +# 21065 "parsing/parser.ml" in let label = let _1 = -# 3796 "parsing/parser.mly" +# 3805 "parsing/parser.mly" ( Labelled label ) -# 21100 "parsing/parser.ml" +# 21072 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) -# 21105 "parsing/parser.ml" +# 21077 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 21111 "parsing/parser.ml" +# 21083 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -21115,15 +21087,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21121 "parsing/parser.ml" +# 21093 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 21127 "parsing/parser.ml" +# 21099 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21173,7 +21145,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 21177 "parsing/parser.ml" +# 21149 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -21183,33 +21155,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3804 "parsing/parser.mly" +# 3813 "parsing/parser.mly" ( ty ) -# 21189 "parsing/parser.ml" +# 21161 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 21195 "parsing/parser.ml" +# 21167 "parsing/parser.ml" in let label = let _1 = -# 3796 "parsing/parser.mly" +# 3805 "parsing/parser.mly" ( Labelled label ) -# 21202 "parsing/parser.ml" +# 21174 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) -# 21207 "parsing/parser.ml" +# 21179 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 21213 "parsing/parser.ml" +# 21185 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -21217,15 +21189,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21223 "parsing/parser.ml" +# 21195 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 21229 "parsing/parser.ml" +# 21201 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21305,24 +21277,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21309 "parsing/parser.ml" +# 21281 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 21314 "parsing/parser.ml" +# 21286 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 21320 "parsing/parser.ml" +# 21292 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 21326 "parsing/parser.ml" +# 21298 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -21330,49 +21302,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21336 "parsing/parser.ml" +# 21308 "parsing/parser.ml" in -# 3683 "parsing/parser.mly" +# 3692 "parsing/parser.mly" ( _1 ) -# 21342 "parsing/parser.ml" +# 21314 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3802 "parsing/parser.mly" +# 3811 "parsing/parser.mly" ( reloc_typ ~loc:_sloc _2 ) -# 21351 "parsing/parser.ml" +# 21323 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 21358 "parsing/parser.ml" +# 21330 "parsing/parser.ml" in let label = let _1 = -# 3798 "parsing/parser.mly" +# 3807 "parsing/parser.mly" ( Nolabel ) -# 21365 "parsing/parser.ml" +# 21337 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) -# 21370 "parsing/parser.ml" +# 21342 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 21376 "parsing/parser.ml" +# 21348 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -21380,15 +21352,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21386 "parsing/parser.ml" +# 21358 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 21392 "parsing/parser.ml" +# 21364 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21430,33 +21402,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3804 "parsing/parser.mly" +# 3813 "parsing/parser.mly" ( ty ) -# 21436 "parsing/parser.ml" +# 21408 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1010 "parsing/parser.mly" +# 1012 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 21442 "parsing/parser.ml" +# 21414 "parsing/parser.ml" in let label = let _1 = -# 3798 "parsing/parser.mly" +# 3807 "parsing/parser.mly" ( Nolabel ) -# 21449 "parsing/parser.ml" +# 21421 "parsing/parser.ml" in -# 3792 "parsing/parser.mly" +# 3801 "parsing/parser.mly" ( _1 ) -# 21454 "parsing/parser.ml" +# 21426 "parsing/parser.ml" in -# 3744 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 21460 "parsing/parser.ml" +# 21432 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -21464,15 +21436,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21470 "parsing/parser.ml" +# 21442 "parsing/parser.ml" in ( -# 3746 "parsing/parser.mly" +# 3755 "parsing/parser.mly" ( _1 ) -# 21476 "parsing/parser.ml" +# 21448 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21536,7 +21508,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 21540 "parsing/parser.ml" +# 21512 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -21549,24 +21521,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21553 "parsing/parser.ml" +# 21525 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 21558 "parsing/parser.ml" +# 21530 "parsing/parser.ml" in -# 3830 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( ty, ltys ) -# 21564 "parsing/parser.ml" +# 21536 "parsing/parser.ml" in let (_endpos_tuple_, _startpos_tuple_) = (_endpos_xs_, _startpos_ty_) in let _loc_tuple_ = (_startpos_tuple_, _endpos_tuple_) in -# 3762 "parsing/parser.mly" +# 3771 "parsing/parser.mly" ( let ty, ltys = tuple in let tuple_loc = _loc_tuple_ in let domain = @@ -21574,7 +21546,7 @@ module Tables = struct in let domain = extra_rhs_core_type domain ~pos:(snd tuple_loc) in Ptyp_arrow(Labelled label, domain, codomain) ) -# 21578 "parsing/parser.ml" +# 21550 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -21582,15 +21554,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21588 "parsing/parser.ml" +# 21560 "parsing/parser.ml" in ( -# 3770 "parsing/parser.mly" +# 3779 "parsing/parser.mly" ( _1 ) -# 21594 "parsing/parser.ml" +# 21566 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21640,7 +21612,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 21644 "parsing/parser.ml" +# 21616 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -21651,18 +21623,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21655 "parsing/parser.ml" +# 21627 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 21660 "parsing/parser.ml" +# 21632 "parsing/parser.ml" in -# 3830 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( ty, ltys ) -# 21666 "parsing/parser.ml" +# 21638 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -21670,11 +21642,11 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3772 "parsing/parser.mly" +# 3781 "parsing/parser.mly" ( let ty, ltys = _3 in mktyp ~loc:_sloc (Ptyp_tuple ((Some label, ty) :: ltys)) ) -# 21678 "parsing/parser.ml" +# 21650 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21767,7 +21739,7 @@ module Tables = struct let _1_inlined2 : # 876 "parsing/parser.mly" (string) -# 21771 "parsing/parser.ml" +# 21743 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : (string Asttypes.loc option) = Obj.magic _1 in @@ -21777,7 +21749,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 21781 "parsing/parser.ml" +# 21753 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -21791,10 +21763,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 21798 "parsing/parser.ml" +# 21770 "parsing/parser.ml" in let id = @@ -21803,36 +21775,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21809 "parsing/parser.ml" +# 21781 "parsing/parser.ml" in let attrs = let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 21818 "parsing/parser.ml" +# 21790 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 21824 "parsing/parser.ml" +# 21796 "parsing/parser.ml" in let label = -# 3796 "parsing/parser.mly" +# 3805 "parsing/parser.mly" ( Labelled label ) -# 21830 "parsing/parser.ml" +# 21802 "parsing/parser.ml" in -# 3783 "parsing/parser.mly" +# 3792 "parsing/parser.mly" ( let ptyp = {ptyp with ppt_attrs = snd attrs @ ptyp.ppt_attrs } in Ptyp_functor(label, id, ptyp, codomain) ) -# 21836 "parsing/parser.ml" +# 21808 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -21840,15 +21812,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 21846 "parsing/parser.ml" +# 21818 "parsing/parser.ml" in ( -# 3786 "parsing/parser.mly" +# 3795 "parsing/parser.mly" ( _1 ) -# 21852 "parsing/parser.ml" +# 21824 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -21929,7 +21901,7 @@ module Tables = struct let _1_inlined2 : # 876 "parsing/parser.mly" (string) -# 21933 "parsing/parser.ml" +# 21905 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : (string Asttypes.loc option) = Obj.magic _1 in @@ -21947,10 +21919,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 21954 "parsing/parser.ml" +# 21926 "parsing/parser.ml" in let id = @@ -21959,36 +21931,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21965 "parsing/parser.ml" +# 21937 "parsing/parser.ml" in let attrs = let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 21974 "parsing/parser.ml" +# 21946 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 21980 "parsing/parser.ml" +# 21952 "parsing/parser.ml" in let label = -# 3798 "parsing/parser.mly" +# 3807 "parsing/parser.mly" ( Nolabel ) -# 21986 "parsing/parser.ml" +# 21958 "parsing/parser.ml" in -# 3783 "parsing/parser.mly" +# 3792 "parsing/parser.mly" ( let ptyp = {ptyp with ppt_attrs = snd attrs @ ptyp.ppt_attrs } in Ptyp_functor(label, id, ptyp, codomain) ) -# 21992 "parsing/parser.ml" +# 21964 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos__2_) in @@ -21996,15 +21968,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 22002 "parsing/parser.ml" +# 21974 "parsing/parser.ml" in ( -# 3786 "parsing/parser.mly" +# 3795 "parsing/parser.mly" ( _1 ) -# 22008 "parsing/parser.ml" +# 21980 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -22037,9 +22009,9 @@ module Tables = struct let _v = let _startpos = _startpos__1_ in ( -# 1417 "parsing/parser.mly" +# 1419 "parsing/parser.mly" ( _startpos, Unit ) -# 22043 "parsing/parser.ml" +# 22015 "parsing/parser.ml" : (Lexing.position * Parsetree.functor_parameter)) in { @@ -22097,16 +22069,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22103 "parsing/parser.ml" +# 22075 "parsing/parser.ml" in let _startpos = _startpos__1_ in ( -# 1420 "parsing/parser.mly" +# 1422 "parsing/parser.mly" ( _startpos, Named (x, mty) ) -# 22110 "parsing/parser.ml" +# 22082 "parsing/parser.ml" : (Lexing.position * Parsetree.functor_parameter)) in { @@ -22124,9 +22096,9 @@ module Tables = struct let _endpos = _startpos in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3532 "parsing/parser.mly" +# 3539 "parsing/parser.mly" ( ([],Pcstr_tuple [],None) ) -# 22130 "parsing/parser.ml" +# 22102 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22157,9 +22129,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3533 "parsing/parser.mly" +# 3540 "parsing/parser.mly" ( ([],_2,None) ) -# 22163 "parsing/parser.ml" +# 22135 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22204,9 +22176,9 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3535 "parsing/parser.mly" +# 3542 "parsing/parser.mly" ( ([],_2,Some _4) ) -# 22210 "parsing/parser.ml" +# 22182 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22269,24 +22241,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22273 "parsing/parser.ml" +# 22245 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 22278 "parsing/parser.ml" +# 22250 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 22284 "parsing/parser.ml" +# 22256 "parsing/parser.ml" in ( -# 3538 "parsing/parser.mly" +# 3545 "parsing/parser.mly" ( (_2,_4,Some _6) ) -# 22290 "parsing/parser.ml" +# 22262 "parsing/parser.ml" : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option)) in @@ -22319,9 +22291,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3540 "parsing/parser.mly" +# 3547 "parsing/parser.mly" ( ([],Pcstr_tuple [],Some _2) ) -# 22325 "parsing/parser.ml" +# 22297 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22370,24 +22342,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22374 "parsing/parser.ml" +# 22346 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 22379 "parsing/parser.ml" +# 22351 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 22385 "parsing/parser.ml" +# 22357 "parsing/parser.ml" in ( -# 3542 "parsing/parser.mly" +# 3549 "parsing/parser.mly" ( (_2,Pcstr_tuple [],Some _4) ) -# 22391 "parsing/parser.ml" +# 22363 "parsing/parser.ml" : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option)) in @@ -22437,9 +22409,9 @@ module Tables = struct let attrs = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 22443 "parsing/parser.ml" +# 22415 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -22449,23 +22421,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22455 "parsing/parser.ml" +# 22427 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3487 "parsing/parser.mly" +# 3494 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 22469 "parsing/parser.ml" +# 22441 "parsing/parser.ml" : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info)) @@ -22509,9 +22481,9 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 22515 "parsing/parser.ml" +# 22487 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined1_ in @@ -22520,29 +22492,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22526 "parsing/parser.ml" +# 22498 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4211 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( () ) -# 22533 "parsing/parser.ml" +# 22505 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3487 "parsing/parser.mly" +# 3494 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 22546 "parsing/parser.ml" +# 22518 "parsing/parser.ml" : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info)) @@ -22618,7 +22590,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 22622 "parsing/parser.ml" +# 22594 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -22631,9 +22603,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 22637 "parsing/parser.ml" +# 22609 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -22642,24 +22614,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22646 "parsing/parser.ml" +# 22618 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 22651 "parsing/parser.ml" +# 22623 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 22657 "parsing/parser.ml" +# 22629 "parsing/parser.ml" in let kind_priv_manifest = -# 3421 "parsing/parser.mly" +# 3428 "parsing/parser.mly" ( _2 ) -# 22663 "parsing/parser.ml" +# 22635 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -22667,29 +22639,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22673 "parsing/parser.ml" +# 22645 "parsing/parser.ml" in let flag = -# 4231 "parsing/parser.mly" +# 4240 "parsing/parser.mly" ( Recursive ) -# 22679 "parsing/parser.ml" +# 22651 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 22686 "parsing/parser.ml" +# 22658 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3355 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -22698,7 +22670,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 22702 "parsing/parser.ml" +# 22674 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -22779,7 +22751,7 @@ module Tables = struct let _1_inlined3 : # 825 "parsing/parser.mly" (string) -# 22783 "parsing/parser.ml" +# 22755 "parsing/parser.ml" = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -22793,9 +22765,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined5 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 22799 "parsing/parser.ml" +# 22771 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined5_ in @@ -22804,24 +22776,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22808 "parsing/parser.ml" +# 22780 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 22813 "parsing/parser.ml" +# 22785 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 22819 "parsing/parser.ml" +# 22791 "parsing/parser.ml" in let kind_priv_manifest = -# 3421 "parsing/parser.mly" +# 3428 "parsing/parser.mly" ( _2 ) -# 22825 "parsing/parser.ml" +# 22797 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -22829,9 +22801,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22835 "parsing/parser.ml" +# 22807 "parsing/parser.ml" in let flag = @@ -22840,24 +22812,24 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4233 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 22846 "parsing/parser.ml" +# 22818 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 22854 "parsing/parser.ml" +# 22826 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3355 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -22866,7 +22838,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 22870 "parsing/parser.ml" +# 22842 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -22934,7 +22906,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 22938 "parsing/parser.ml" +# 22910 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -22947,9 +22919,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 22953 "parsing/parser.ml" +# 22925 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -22958,18 +22930,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22962 "parsing/parser.ml" +# 22934 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 22967 "parsing/parser.ml" +# 22939 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 22973 "parsing/parser.ml" +# 22945 "parsing/parser.ml" in let id = @@ -22978,29 +22950,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22984 "parsing/parser.ml" +# 22956 "parsing/parser.ml" in let flag = -# 4227 "parsing/parser.mly" +# 4236 "parsing/parser.mly" ( Recursive ) -# 22990 "parsing/parser.ml" +# 22962 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 22997 "parsing/parser.ml" +# 22969 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3355 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -23009,7 +22981,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 23013 "parsing/parser.ml" +# 22985 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -23083,7 +23055,7 @@ module Tables = struct let _1_inlined3 : # 825 "parsing/parser.mly" (string) -# 23087 "parsing/parser.ml" +# 23059 "parsing/parser.ml" = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -23097,9 +23069,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 23103 "parsing/parser.ml" +# 23075 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -23108,18 +23080,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 23112 "parsing/parser.ml" +# 23084 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 23117 "parsing/parser.ml" +# 23089 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 23123 "parsing/parser.ml" +# 23095 "parsing/parser.ml" in let id = @@ -23128,29 +23100,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23134 "parsing/parser.ml" +# 23106 "parsing/parser.ml" in let flag = -# 4228 "parsing/parser.mly" +# 4237 "parsing/parser.mly" ( Nonrecursive ) -# 23140 "parsing/parser.ml" +# 23112 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 23147 "parsing/parser.ml" +# 23119 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3355 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -23159,7 +23131,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 23163 "parsing/parser.ml" +# 23135 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -23182,15 +23154,15 @@ module Tables = struct let _1 : # 876 "parsing/parser.mly" (string) -# 23186 "parsing/parser.ml" +# 23158 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4070 "parsing/parser.mly" +# 4079 "parsing/parser.mly" ( _1 ) -# 23194 "parsing/parser.ml" +# 23166 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23211,15 +23183,15 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 23215 "parsing/parser.ml" +# 23187 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4071 "parsing/parser.mly" +# 4080 "parsing/parser.mly" ( _1 ) -# 23223 "parsing/parser.ml" +# 23195 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23249,9 +23221,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.structure) = -# 1284 "parsing/parser.mly" +# 1286 "parsing/parser.mly" ( _1 ) -# 23255 "parsing/parser.ml" +# 23227 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23267,9 +23239,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string) = -# 4120 "parsing/parser.mly" +# 4129 "parsing/parser.mly" ( "" ) -# 23273 "parsing/parser.ml" +# 23245 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23299,9 +23271,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 4121 "parsing/parser.mly" +# 4130 "parsing/parser.mly" ( ";.." ) -# 23305 "parsing/parser.ml" +# 23277 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23331,9 +23303,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.signature) = -# 1291 "parsing/parser.mly" +# 1293 "parsing/parser.mly" ( _1 ) -# 23337 "parsing/parser.ml" +# 23309 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23377,9 +23349,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4412 "parsing/parser.mly" +# 4421 "parsing/parser.mly" ( (_2, _3) ) -# 23383 "parsing/parser.ml" +# 23355 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23400,7 +23372,7 @@ module Tables = struct let _1 : # 867 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 23404 "parsing/parser.ml" +# 23376 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23410,9 +23382,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4414 "parsing/parser.mly" +# 4423 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 23416 "parsing/parser.ml" +# 23388 "parsing/parser.ml" : (Parsetree.extension)) in { @@ -23461,7 +23433,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 23465 "parsing/parser.ml" +# 23437 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23471,34 +23443,34 @@ module Tables = struct let _5 = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 23477 "parsing/parser.ml" +# 23449 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3691 "parsing/parser.mly" +# 3700 "parsing/parser.mly" ( _1 ) -# 23486 "parsing/parser.ml" +# 23458 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 23494 "parsing/parser.ml" +# 23466 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23502 "parsing/parser.ml" +# 23474 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -23509,10 +23481,10 @@ module Tables = struct _startpos__2_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3559 "parsing/parser.mly" +# 3566 "parsing/parser.mly" ( let info = symbol_info _endpos in Type.field _2 _4 ~mut:_1 ~attrs:_5 ~loc:(make_loc _sloc) ~info ) -# 23516 "parsing/parser.ml" +# 23488 "parsing/parser.ml" : (Parsetree.label_declaration)) in { @@ -23575,7 +23547,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 23579 "parsing/parser.ml" +# 23551 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23585,43 +23557,43 @@ module Tables = struct let _7 = let _1 = _1_inlined4 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 23591 "parsing/parser.ml" +# 23563 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _5 = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 23600 "parsing/parser.ml" +# 23572 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3691 "parsing/parser.mly" +# 3700 "parsing/parser.mly" ( _1 ) -# 23609 "parsing/parser.ml" +# 23581 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 23617 "parsing/parser.ml" +# 23589 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23625 "parsing/parser.ml" +# 23597 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -23632,14 +23604,14 @@ module Tables = struct _startpos__2_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3564 "parsing/parser.mly" +# 3571 "parsing/parser.mly" ( let info = match rhs_info _endpos__5_ with | Some _ as info_before_semi -> info_before_semi | None -> symbol_info _endpos in Type.field _2 _4 ~mut:_1 ~attrs:(_5 @ _7) ~loc:(make_loc _sloc) ~info ) -# 23643 "parsing/parser.ml" +# 23615 "parsing/parser.ml" : (Parsetree.label_declaration)) in { @@ -23663,9 +23635,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3553 "parsing/parser.mly" +# 3560 "parsing/parser.mly" ( [_1] ) -# 23669 "parsing/parser.ml" +# 23641 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23688,9 +23660,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3554 "parsing/parser.mly" +# 3561 "parsing/parser.mly" ( [_1] ) -# 23694 "parsing/parser.ml" +# 23666 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23720,9 +23692,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.label_declaration list) = -# 3555 "parsing/parser.mly" +# 3562 "parsing/parser.mly" ( _1 :: _2 ) -# 23726 "parsing/parser.ml" +# 23698 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23743,7 +23715,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 23747 "parsing/parser.ml" +# 23719 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23755,24 +23727,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23761 "parsing/parser.ml" +# 23733 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 23770 "parsing/parser.ml" +# 23742 "parsing/parser.ml" in ( -# 2412 "parsing/parser.mly" +# 2417 "parsing/parser.mly" ( x ) -# 23776 "parsing/parser.ml" +# 23748 "parsing/parser.ml" : (string * Parsetree.pattern)) in { @@ -23808,7 +23780,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 23812 "parsing/parser.ml" +# 23784 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23817,9 +23789,9 @@ module Tables = struct let cty = let _1 = _1_inlined1 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) -# 23823 "parsing/parser.ml" +# 23795 "parsing/parser.ml" in let _endpos_cty_ = _endpos__1_inlined1_ in @@ -23829,18 +23801,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23835 "parsing/parser.ml" +# 23807 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 23844 "parsing/parser.ml" +# 23816 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -23848,11 +23820,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2414 "parsing/parser.mly" +# 2419 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 23856 "parsing/parser.ml" +# 23828 "parsing/parser.ml" : (string * Parsetree.pattern)) in { @@ -23876,9 +23848,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4152 "parsing/parser.mly" +# 4161 "parsing/parser.mly" ( _1 ) -# 23882 "parsing/parser.ml" +# 23854 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23901,9 +23873,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2699 "parsing/parser.mly" +# 2702 "parsing/parser.mly" ( (Nolabel, _1) ) -# 23907 "parsing/parser.ml" +# 23879 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23931,15 +23903,15 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 23935 "parsing/parser.ml" +# 23907 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2701 "parsing/parser.mly" +# 2704 "parsing/parser.mly" ( (Labelled _1, _2) ) -# 23943 "parsing/parser.ml" +# 23915 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23966,7 +23938,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 23970 "parsing/parser.ml" +# 23942 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23975,10 +23947,45 @@ module Tables = struct let _v = let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2703 "parsing/parser.mly" +# 2706 "parsing/parser.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 23982 "parsing/parser.ml" +# 23954 "parsing/parser.ml" + : (Asttypes.arg_label * Parsetree.expression)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _loc__2_ = (_startpos__2_, _endpos__2_) in + ( +# 2709 "parsing/parser.mly" + ( (Labelled "_", mkexp ~loc:_loc__2_ Pexp_hole) ) +# 23989 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -24026,7 +24033,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24030 "parsing/parser.ml" +# 24037 "parsing/parser.ml" = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -24037,10 +24044,10 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2706 "parsing/parser.mly" +# 2711 "parsing/parser.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 24044 "parsing/parser.ml" +# 24051 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -24068,7 +24075,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24072 "parsing/parser.ml" +# 24079 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -24077,10 +24084,45 @@ module Tables = struct let _v = let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2709 "parsing/parser.mly" +# 2714 "parsing/parser.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 24084 "parsing/parser.ml" +# 24091 "parsing/parser.ml" + : (Asttypes.arg_label * Parsetree.expression)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _loc__2_ = (_startpos__2_, _endpos__2_) in + ( +# 2717 "parsing/parser.mly" + ( (Optional "_", mkexp ~loc:_loc__2_ Pexp_hole) ) +# 24126 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -24109,15 +24151,15 @@ module Tables = struct let _1 : # 842 "parsing/parser.mly" (string) -# 24113 "parsing/parser.ml" +# 24155 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2712 "parsing/parser.mly" +# 2719 "parsing/parser.mly" ( (Optional _1, _2) ) -# 24121 "parsing/parser.ml" +# 24163 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24157,15 +24199,15 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 24163 "parsing/parser.ml" +# 24205 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 24169 "parsing/parser.ml" +# 24211 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24206,7 +24248,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 24210 "parsing/parser.ml" +# 24252 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in @@ -24217,15 +24259,15 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 24223 "parsing/parser.ml" +# 24265 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 24229 "parsing/parser.ml" +# 24271 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24265,7 +24307,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24269 "parsing/parser.ml" +# 24311 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -24277,16 +24319,16 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 24284 "parsing/parser.ml" +# 24326 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 24290 "parsing/parser.ml" +# 24332 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24353,7 +24395,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24357 "parsing/parser.ml" +# 24399 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -24368,18 +24410,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 24377 "parsing/parser.ml" +# 24419 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 24383 "parsing/parser.ml" +# 24425 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24420,20 +24462,20 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 24426 "parsing/parser.ml" +# 24468 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 24432 "parsing/parser.ml" +# 24474 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24437 "parsing/parser.ml" +# 24479 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24474,7 +24516,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 24478 "parsing/parser.ml" +# 24520 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.pattern) = Obj.magic _1 in @@ -24485,20 +24527,20 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 24491 "parsing/parser.ml" +# 24533 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 24497 "parsing/parser.ml" +# 24539 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24502 "parsing/parser.ml" +# 24544 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24538,7 +24580,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24542 "parsing/parser.ml" +# 24584 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -24550,21 +24592,21 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 24557 "parsing/parser.ml" +# 24599 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 24563 "parsing/parser.ml" +# 24605 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24568 "parsing/parser.ml" +# 24610 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24631,7 +24673,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24635 "parsing/parser.ml" +# 24677 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -24646,23 +24688,23 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 24655 "parsing/parser.ml" +# 24697 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 24661 "parsing/parser.ml" +# 24703 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24666 "parsing/parser.ml" +# 24708 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24705,7 +24747,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 24709 "parsing/parser.ml" +# 24751 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24714,23 +24756,23 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 24720 "parsing/parser.ml" +# 24762 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 24728 "parsing/parser.ml" +# 24770 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24734 "parsing/parser.ml" +# 24776 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24777,14 +24819,14 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 24781 "parsing/parser.ml" +# 24823 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in let _1 : # 812 "parsing/parser.mly" (string) -# 24788 "parsing/parser.ml" +# 24830 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24793,23 +24835,23 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined2) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 24799 "parsing/parser.ml" +# 24841 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 24807 "parsing/parser.ml" +# 24849 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24813 "parsing/parser.ml" +# 24855 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24855,7 +24897,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24859 "parsing/parser.ml" +# 24901 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -24863,7 +24905,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 24867 "parsing/parser.ml" +# 24909 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24872,24 +24914,24 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 24879 "parsing/parser.ml" +# 24921 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 24887 "parsing/parser.ml" +# 24929 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 24893 "parsing/parser.ml" +# 24935 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -24962,7 +25004,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 24966 "parsing/parser.ml" +# 25008 "parsing/parser.ml" = Obj.magic label in let _2_inlined2 : unit = Obj.magic _2_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -24971,7 +25013,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 24975 "parsing/parser.ml" +# 25017 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24982,26 +25024,26 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 24991 "parsing/parser.ml" +# 25033 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 24999 "parsing/parser.ml" +# 25041 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25005 "parsing/parser.ml" +# 25047 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25043,7 +25085,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25047 "parsing/parser.ml" +# 25089 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -25053,24 +25095,24 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 25059 "parsing/parser.ml" +# 25101 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25068 "parsing/parser.ml" +# 25110 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25074 "parsing/parser.ml" +# 25116 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25117,13 +25159,13 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 25121 "parsing/parser.ml" +# 25163 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let label : # 825 "parsing/parser.mly" (string) -# 25127 "parsing/parser.ml" +# 25169 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -25133,24 +25175,24 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 25139 "parsing/parser.ml" +# 25181 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25148 "parsing/parser.ml" +# 25190 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25154 "parsing/parser.ml" +# 25196 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25196,14 +25238,14 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 25200 "parsing/parser.ml" +# 25242 "parsing/parser.ml" = Obj.magic label_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let label : # 825 "parsing/parser.mly" (string) -# 25207 "parsing/parser.ml" +# 25249 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -25214,25 +25256,25 @@ module Tables = struct let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25221 "parsing/parser.ml" +# 25263 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25230 "parsing/parser.ml" +# 25272 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25236 "parsing/parser.ml" +# 25278 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25305,7 +25347,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 25309 "parsing/parser.ml" +# 25351 "parsing/parser.ml" = Obj.magic label_inlined1 in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -25313,7 +25355,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25317 "parsing/parser.ml" +# 25359 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -25325,27 +25367,27 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25334 "parsing/parser.ml" +# 25376 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25343 "parsing/parser.ml" +# 25385 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25349 "parsing/parser.ml" +# 25391 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25414,7 +25456,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25418 "parsing/parser.ml" +# 25460 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -25425,9 +25467,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 25431 "parsing/parser.ml" +# 25473 "parsing/parser.ml" in let _1 = @@ -25435,18 +25477,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25444 "parsing/parser.ml" +# 25486 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25450 "parsing/parser.ml" +# 25492 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25517,7 +25559,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 25521 "parsing/parser.ml" +# 25563 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _6 : unit = Obj.magic _6 in @@ -25526,7 +25568,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25530 "parsing/parser.ml" +# 25572 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -25537,9 +25579,9 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined2) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 25543 "parsing/parser.ml" +# 25585 "parsing/parser.ml" in let _1 = @@ -25547,18 +25589,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25556 "parsing/parser.ml" +# 25598 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25562 "parsing/parser.ml" +# 25604 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25628,7 +25670,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 25632 "parsing/parser.ml" +# 25674 "parsing/parser.ml" = Obj.magic label_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -25638,7 +25680,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25642 "parsing/parser.ml" +# 25684 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -25650,10 +25692,10 @@ module Tables = struct let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 25657 "parsing/parser.ml" +# 25699 "parsing/parser.ml" in let _1 = @@ -25661,18 +25703,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25670 "parsing/parser.ml" +# 25712 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25676 "parsing/parser.ml" +# 25718 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25769,7 +25811,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 25773 "parsing/parser.ml" +# 25815 "parsing/parser.ml" = Obj.magic label_inlined1 in let _2_inlined2 : unit = Obj.magic _2_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -25780,7 +25822,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 25784 "parsing/parser.ml" +# 25826 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -25793,12 +25835,12 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25802 "parsing/parser.ml" +# 25844 "parsing/parser.ml" in let _1 = @@ -25806,18 +25848,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 25815 "parsing/parser.ml" +# 25857 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 25821 "parsing/parser.ml" +# 25863 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25857,9 +25899,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 3201 "parsing/parser.mly" +# 3208 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 25863 "parsing/parser.ml" +# 25905 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25900,15 +25942,15 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 25906 "parsing/parser.ml" +# 25948 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 25912 "parsing/parser.ml" +# 25954 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -25949,7 +25991,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 25953 "parsing/parser.ml" +# 25995 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in @@ -25960,15 +26002,15 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 25966 "parsing/parser.ml" +# 26008 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 25972 "parsing/parser.ml" +# 26014 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26008,7 +26050,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26012 "parsing/parser.ml" +# 26054 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -26020,16 +26062,16 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26027 "parsing/parser.ml" +# 26069 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 26033 "parsing/parser.ml" +# 26075 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26096,7 +26138,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26100 "parsing/parser.ml" +# 26142 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -26111,18 +26153,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 26120 "parsing/parser.ml" +# 26162 "parsing/parser.ml" in ( -# 3197 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( _3 :: _1 ) -# 26126 "parsing/parser.ml" +# 26168 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26163,20 +26205,20 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 26169 "parsing/parser.ml" +# 26211 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 26175 "parsing/parser.ml" +# 26217 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26180 "parsing/parser.ml" +# 26222 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26217,7 +26259,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 26221 "parsing/parser.ml" +# 26263 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.pattern) = Obj.magic _1 in @@ -26228,20 +26270,20 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 26234 "parsing/parser.ml" +# 26276 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 26240 "parsing/parser.ml" +# 26282 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26245 "parsing/parser.ml" +# 26287 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26281,7 +26323,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26285 "parsing/parser.ml" +# 26327 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -26293,21 +26335,21 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26300 "parsing/parser.ml" +# 26342 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 26306 "parsing/parser.ml" +# 26348 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26311 "parsing/parser.ml" +# 26353 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26374,7 +26416,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26378 "parsing/parser.ml" +# 26420 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -26389,23 +26431,23 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 26398 "parsing/parser.ml" +# 26440 "parsing/parser.ml" in let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 26404 "parsing/parser.ml" +# 26446 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26409 "parsing/parser.ml" +# 26451 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26448,7 +26490,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 26452 "parsing/parser.ml" +# 26494 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26457,23 +26499,23 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 26463 "parsing/parser.ml" +# 26505 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 26471 "parsing/parser.ml" +# 26513 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26477 "parsing/parser.ml" +# 26519 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26520,14 +26562,14 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 26524 "parsing/parser.ml" +# 26566 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in let _1 : # 812 "parsing/parser.mly" (string) -# 26531 "parsing/parser.ml" +# 26573 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26536,23 +26578,23 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined2) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 26542 "parsing/parser.ml" +# 26584 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 26550 "parsing/parser.ml" +# 26592 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26556 "parsing/parser.ml" +# 26598 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26598,7 +26640,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26602 "parsing/parser.ml" +# 26644 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -26606,7 +26648,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 26610 "parsing/parser.ml" +# 26652 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26615,24 +26657,24 @@ module Tables = struct let _3 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26622 "parsing/parser.ml" +# 26664 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 26630 "parsing/parser.ml" +# 26672 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26636 "parsing/parser.ml" +# 26678 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26705,7 +26747,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26709 "parsing/parser.ml" +# 26751 "parsing/parser.ml" = Obj.magic label in let _2_inlined2 : unit = Obj.magic _2_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -26714,7 +26756,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 26718 "parsing/parser.ml" +# 26760 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26725,26 +26767,26 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 26734 "parsing/parser.ml" +# 26776 "parsing/parser.ml" in let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 26742 "parsing/parser.ml" +# 26784 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26748 "parsing/parser.ml" +# 26790 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26786,7 +26828,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 26790 "parsing/parser.ml" +# 26832 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26796,24 +26838,24 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 26802 "parsing/parser.ml" +# 26844 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26811 "parsing/parser.ml" +# 26853 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26817 "parsing/parser.ml" +# 26859 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26860,13 +26902,13 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 26864 "parsing/parser.ml" +# 26906 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let label : # 825 "parsing/parser.mly" (string) -# 26870 "parsing/parser.ml" +# 26912 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26876,24 +26918,24 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 26882 "parsing/parser.ml" +# 26924 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26891 "parsing/parser.ml" +# 26933 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26897 "parsing/parser.ml" +# 26939 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -26939,14 +26981,14 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 26943 "parsing/parser.ml" +# 26985 "parsing/parser.ml" = Obj.magic label_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let label : # 825 "parsing/parser.mly" (string) -# 26950 "parsing/parser.ml" +# 26992 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26957,25 +26999,25 @@ module Tables = struct let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26964 "parsing/parser.ml" +# 27006 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 26973 "parsing/parser.ml" +# 27015 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 26979 "parsing/parser.ml" +# 27021 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27048,7 +27090,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 27052 "parsing/parser.ml" +# 27094 "parsing/parser.ml" = Obj.magic label_inlined1 in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -27056,7 +27098,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 27060 "parsing/parser.ml" +# 27102 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -27068,27 +27110,27 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27077 "parsing/parser.ml" +# 27119 "parsing/parser.ml" in let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 27086 "parsing/parser.ml" +# 27128 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 27092 "parsing/parser.ml" +# 27134 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27157,7 +27199,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 27161 "parsing/parser.ml" +# 27203 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -27168,9 +27210,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3169 "parsing/parser.mly" +# 3176 "parsing/parser.mly" ( None, _1 ) -# 27174 "parsing/parser.ml" +# 27216 "parsing/parser.ml" in let _1 = @@ -27178,18 +27220,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27187 "parsing/parser.ml" +# 27229 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 27193 "parsing/parser.ml" +# 27235 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27260,7 +27302,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 27264 "parsing/parser.ml" +# 27306 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _6 : unit = Obj.magic _6 in @@ -27269,7 +27311,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 27273 "parsing/parser.ml" +# 27315 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -27280,9 +27322,9 @@ module Tables = struct let _3 = let (_1, _2) = (_1_inlined1, _2_inlined2) in -# 3171 "parsing/parser.mly" +# 3178 "parsing/parser.mly" ( Some _1, _2 ) -# 27286 "parsing/parser.ml" +# 27328 "parsing/parser.ml" in let _1 = @@ -27290,18 +27332,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27299 "parsing/parser.ml" +# 27341 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 27305 "parsing/parser.ml" +# 27347 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27371,7 +27413,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 27375 "parsing/parser.ml" +# 27417 "parsing/parser.ml" = Obj.magic label_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -27381,7 +27423,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 27385 "parsing/parser.ml" +# 27427 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -27393,10 +27435,10 @@ module Tables = struct let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3173 "parsing/parser.mly" +# 3180 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 27400 "parsing/parser.ml" +# 27442 "parsing/parser.ml" in let _1 = @@ -27404,18 +27446,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27413 "parsing/parser.ml" +# 27455 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 27419 "parsing/parser.ml" +# 27461 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27512,7 +27554,7 @@ module Tables = struct let label_inlined1 : # 825 "parsing/parser.mly" (string) -# 27516 "parsing/parser.ml" +# 27558 "parsing/parser.ml" = Obj.magic label_inlined1 in let _2_inlined2 : unit = Obj.magic _2_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -27523,7 +27565,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 27527 "parsing/parser.ml" +# 27569 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -27536,12 +27578,12 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3176 "parsing/parser.mly" +# 3183 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27545 "parsing/parser.ml" +# 27587 "parsing/parser.ml" in let _1 = @@ -27549,18 +27591,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 27558 "parsing/parser.ml" +# 27600 "parsing/parser.ml" in ( -# 3199 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( [ _3; _1 ] ) -# 27564 "parsing/parser.ml" +# 27606 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27600,9 +27642,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 3201 "parsing/parser.mly" +# 3208 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 27606 "parsing/parser.ml" +# 27648 "parsing/parser.ml" : ((string option * Parsetree.pattern) list)) in { @@ -27626,10 +27668,10 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern_desc) = -# 3213 "parsing/parser.mly" +# 3220 "parsing/parser.mly" ( let closed, pat = _1 in Ppat_tuple(List.rev pat, closed) ) -# 27633 "parsing/parser.ml" +# 27675 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27652,10 +27694,10 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern_desc) = -# 3213 "parsing/parser.mly" +# 3220 "parsing/parser.mly" ( let closed, pat = _1 in Ppat_tuple(List.rev pat, closed) ) -# 27659 "parsing/parser.ml" +# 27701 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27680,9 +27722,9 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option * bool) = -# 2751 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( let p,e,c = _1 in (p,e,c,false) ) -# 27686 "parsing/parser.ml" +# 27728 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27709,9 +27751,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in ( -# 2754 "parsing/parser.mly" +# 2761 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, None, true) ) -# 27715 "parsing/parser.ml" +# 27757 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option * bool)) in @@ -27748,15 +27790,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2719 "parsing/parser.mly" +# 2726 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 27754 "parsing/parser.ml" +# 27796 "parsing/parser.ml" in ( -# 2723 "parsing/parser.mly" +# 2730 "parsing/parser.mly" ( (_1, _2, None) ) -# 27760 "parsing/parser.ml" +# 27802 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option)) in @@ -27807,13 +27849,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2719 "parsing/parser.mly" +# 2726 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 27813 "parsing/parser.ml" +# 27855 "parsing/parser.ml" in ( -# 2725 "parsing/parser.mly" +# 2732 "parsing/parser.mly" ( let v = _1 in (* PR#7344 *) let t = match _2 with @@ -27823,7 +27865,7 @@ module Tables = struct in (v, _4, Some t) ) -# 27827 "parsing/parser.ml" +# 27869 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option)) in @@ -27896,24 +27938,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 27900 "parsing/parser.ml" +# 27942 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 27905 "parsing/parser.ml" +# 27947 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 27911 "parsing/parser.ml" +# 27953 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 27917 "parsing/parser.ml" +# 27959 "parsing/parser.ml" in let _startpos__3_ = _startpos_xs_ in @@ -27922,19 +27964,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2719 "parsing/parser.mly" +# 2726 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 27928 "parsing/parser.ml" +# 27970 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 2735 "parsing/parser.mly" +# 2742 "parsing/parser.mly" ( let t = ghtyp ~loc:(_loc__3_) _3 in (_1, _5, Some (Pvc_constraint { locally_abstract_univars = []; typ=t })) ) -# 27938 "parsing/parser.ml" +# 27980 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option)) in @@ -28009,27 +28051,27 @@ module Tables = struct let _endpos = _endpos__8_ in let _v = let _4 = -# 2716 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( xs ) -# 28015 "parsing/parser.ml" +# 28057 "parsing/parser.ml" in let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2719 "parsing/parser.mly" +# 2726 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 28024 "parsing/parser.ml" +# 28066 "parsing/parser.ml" in ( -# 2740 "parsing/parser.mly" +# 2747 "parsing/parser.mly" ( let constraint' = Pvc_constraint { locally_abstract_univars=_4; typ = _6} in (_1, _8, Some constraint') ) -# 28033 "parsing/parser.ml" +# 28075 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option)) in @@ -28069,9 +28111,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option) = -# 2745 "parsing/parser.mly" +# 2752 "parsing/parser.mly" ( (_1, _3, None) ) -# 28075 "parsing/parser.ml" +# 28117 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28123,9 +28165,9 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option) = -# 2747 "parsing/parser.mly" +# 2754 "parsing/parser.mly" ( (_1, _5, Some(Pvc_constraint { locally_abstract_univars=[]; typ=_3 })) ) -# 28129 "parsing/parser.ml" +# 28171 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28188,36 +28230,36 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 28194 "parsing/parser.ml" +# 28236 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 28203 "parsing/parser.ml" +# 28245 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2774 "parsing/parser.mly" +# 2781 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 28215 "parsing/parser.ml" +# 28257 "parsing/parser.ml" in ( -# 2764 "parsing/parser.mly" +# 2771 "parsing/parser.mly" ( _1 ) -# 28221 "parsing/parser.ml" +# 28263 "parsing/parser.ml" : (let_bindings)) in { @@ -28248,9 +28290,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2765 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( addlb _1 _2 ) -# 28254 "parsing/parser.ml" +# 28296 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28306,41 +28348,41 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 28312 "parsing/parser.ml" +# 28354 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 28321 "parsing/parser.ml" +# 28363 "parsing/parser.ml" in let ext = -# 4398 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( None ) -# 28327 "parsing/parser.ml" +# 28369 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2774 "parsing/parser.mly" +# 2781 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 28338 "parsing/parser.ml" +# 28380 "parsing/parser.ml" in ( -# 2764 "parsing/parser.mly" +# 2771 "parsing/parser.mly" ( _1 ) -# 28344 "parsing/parser.ml" +# 28386 "parsing/parser.ml" : (let_bindings)) in { @@ -28411,18 +28453,18 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 28417 "parsing/parser.ml" +# 28459 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 28426 "parsing/parser.ml" +# 28468 "parsing/parser.ml" in let ext = @@ -28431,27 +28473,27 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4400 "parsing/parser.mly" +# 4409 "parsing/parser.mly" ( not_expecting _loc "extension" ) -# 28437 "parsing/parser.ml" +# 28479 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2774 "parsing/parser.mly" +# 2781 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 28449 "parsing/parser.ml" +# 28491 "parsing/parser.ml" in ( -# 2764 "parsing/parser.mly" +# 2771 "parsing/parser.mly" ( _1 ) -# 28455 "parsing/parser.ml" +# 28497 "parsing/parser.ml" : (let_bindings)) in { @@ -28482,9 +28524,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2765 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( addlb _1 _2 ) -# 28488 "parsing/parser.ml" +# 28530 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28507,9 +28549,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2424 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( _1 ) -# 28513 "parsing/parser.ml" +# 28555 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28551,15 +28593,15 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) -# 28557 "parsing/parser.ml" +# 28599 "parsing/parser.ml" in -# 2426 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( Ppat_constraint(_1, _3) ) -# 28563 "parsing/parser.ml" +# 28605 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -28567,15 +28609,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 28573 "parsing/parser.ml" +# 28615 "parsing/parser.ml" in ( -# 2427 "parsing/parser.mly" +# 2432 "parsing/parser.mly" ( _1 ) -# 28579 "parsing/parser.ml" +# 28621 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -28611,15 +28653,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2719 "parsing/parser.mly" +# 2726 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 28617 "parsing/parser.ml" +# 28659 "parsing/parser.ml" in ( -# 2791 "parsing/parser.mly" +# 2798 "parsing/parser.mly" ( (pat, exp) ) -# 28623 "parsing/parser.ml" +# 28665 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression)) in { @@ -28647,9 +28689,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in ( -# 2794 "parsing/parser.mly" +# 2801 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) -# 28653 "parsing/parser.ml" +# 28695 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression)) in { @@ -28701,10 +28743,10 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2796 "parsing/parser.mly" +# 2803 "parsing/parser.mly" ( let loc = (_startpos_pat_, _endpos_typ_) in (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) -# 28708 "parsing/parser.ml" +# 28750 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28741,9 +28783,9 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2799 "parsing/parser.mly" +# 2806 "parsing/parser.mly" ( (pat, exp) ) -# 28747 "parsing/parser.ml" +# 28789 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28766,10 +28808,10 @@ module Tables = struct let _startpos = _startpos_body_ in let _endpos = _endpos_body_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = -# 2803 "parsing/parser.mly" +# 2810 "parsing/parser.mly" ( let let_pat, let_exp = body in let_pat, let_exp, [] ) -# 28773 "parsing/parser.ml" +# 28815 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28803,7 +28845,7 @@ module Tables = struct let _1 : # 808 "parsing/parser.mly" (string) -# 28807 "parsing/parser.ml" +# 28849 "parsing/parser.ml" = Obj.magic _1 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -28815,22 +28857,22 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 28821 "parsing/parser.ml" +# 28863 "parsing/parser.ml" in let _endpos = _endpos_body_ in let _symbolstartpos = _startpos_bindings_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2806 "parsing/parser.mly" +# 2813 "parsing/parser.mly" ( let let_pat, let_exp, rev_ands = bindings in let pbop_pat, pbop_exp = body in let pbop_loc = make_loc _sloc in let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in let_pat, let_exp, and_ :: rev_ands ) -# 28834 "parsing/parser.ml" +# 28876 "parsing/parser.ml" : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list)) in { @@ -28849,7 +28891,7 @@ module Tables = struct let _v : (Parsetree.class_declaration list) = # 216 "" ( [] ) -# 28853 "parsing/parser.ml" +# 28895 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28915,7 +28957,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 28919 "parsing/parser.ml" +# 28961 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -28929,9 +28971,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 28935 "parsing/parser.ml" +# 28977 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -28941,24 +28983,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 28947 "parsing/parser.ml" +# 28989 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 28955 "parsing/parser.ml" +# 28997 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1994 "parsing/parser.mly" +# 1999 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -28966,13 +29008,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs ) -# 28970 "parsing/parser.ml" +# 29012 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 28976 "parsing/parser.ml" +# 29018 "parsing/parser.ml" : (Parsetree.class_declaration list)) in { @@ -28991,7 +29033,7 @@ module Tables = struct let _v : (Parsetree.class_description list) = # 216 "" ( [] ) -# 28995 "parsing/parser.ml" +# 29037 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29064,7 +29106,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 29068 "parsing/parser.ml" +# 29110 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -29078,9 +29120,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29084 "parsing/parser.ml" +# 29126 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29090,24 +29132,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29096 "parsing/parser.ml" +# 29138 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29104 "parsing/parser.ml" +# 29146 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2286 "parsing/parser.mly" +# 2291 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -29115,13 +29157,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs ) -# 29119 "parsing/parser.ml" +# 29161 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29125 "parsing/parser.ml" +# 29167 "parsing/parser.ml" : (Parsetree.class_description list)) in { @@ -29140,7 +29182,7 @@ module Tables = struct let _v : (Parsetree.class_type_declaration list) = # 216 "" ( [] ) -# 29144 "parsing/parser.ml" +# 29186 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29213,7 +29255,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 29217 "parsing/parser.ml" +# 29259 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -29227,9 +29269,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29233 "parsing/parser.ml" +# 29275 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29239,24 +29281,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29245 "parsing/parser.ml" +# 29287 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29253 "parsing/parser.ml" +# 29295 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2325 "parsing/parser.mly" +# 2330 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -29264,13 +29306,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs ) -# 29268 "parsing/parser.ml" +# 29310 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29274 "parsing/parser.ml" +# 29316 "parsing/parser.ml" : (Parsetree.class_type_declaration list)) in { @@ -29289,7 +29331,7 @@ module Tables = struct let _v : (Parsetree.module_binding list) = # 216 "" ( [] ) -# 29293 "parsing/parser.ml" +# 29335 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29351,9 +29393,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29357 "parsing/parser.ml" +# 29399 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29363,24 +29405,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29369 "parsing/parser.ml" +# 29411 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29377 "parsing/parser.ml" +# 29419 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1656 "parsing/parser.mly" +# 1661 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -29388,13 +29430,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Mb.mk name body ~attrs ~loc ~text ~docs ) -# 29392 "parsing/parser.ml" +# 29434 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29398 "parsing/parser.ml" +# 29440 "parsing/parser.ml" : (Parsetree.module_binding list)) in { @@ -29413,7 +29455,7 @@ module Tables = struct let _v : (Parsetree.module_declaration list) = # 216 "" ( [] ) -# 29417 "parsing/parser.ml" +# 29459 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29482,9 +29524,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29488 "parsing/parser.ml" +# 29530 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29494,24 +29536,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29500 "parsing/parser.ml" +# 29542 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29508 "parsing/parser.ml" +# 29550 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1935 "parsing/parser.mly" +# 1940 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let docs = symbol_docs _sloc in @@ -29519,13 +29561,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Md.mk name mty ~attrs ~loc ~text ~docs ) -# 29523 "parsing/parser.ml" +# 29565 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29529 "parsing/parser.ml" +# 29571 "parsing/parser.ml" : (Parsetree.module_declaration list)) in { @@ -29544,7 +29586,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 216 "" ( [] ) -# 29548 "parsing/parser.ml" +# 29590 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29576,7 +29618,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 219 "" ( x :: xs ) -# 29580 "parsing/parser.ml" +# 29622 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29594,7 +29636,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 216 "" ( [] ) -# 29598 "parsing/parser.ml" +# 29640 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29661,7 +29703,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 29665 "parsing/parser.ml" +# 29707 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -29675,9 +29717,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29681 "parsing/parser.ml" +# 29723 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29686,18 +29728,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 29690 "parsing/parser.ml" +# 29732 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 29695 "parsing/parser.ml" +# 29737 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 29701 "parsing/parser.ml" +# 29743 "parsing/parser.ml" in let id = @@ -29706,24 +29748,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29712 "parsing/parser.ml" +# 29754 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29720 "parsing/parser.ml" +# 29762 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3372 "parsing/parser.mly" +# 3379 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -29733,13 +29775,13 @@ module Tables = struct Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 29737 "parsing/parser.ml" +# 29779 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29743 "parsing/parser.ml" +# 29785 "parsing/parser.ml" : (Parsetree.type_declaration list)) in { @@ -29758,7 +29800,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 216 "" ( [] ) -# 29762 "parsing/parser.ml" +# 29804 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29832,7 +29874,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 29836 "parsing/parser.ml" +# 29878 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -29846,9 +29888,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 29852 "parsing/parser.ml" +# 29894 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -29857,24 +29899,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 29861 "parsing/parser.ml" +# 29903 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 29866 "parsing/parser.ml" +# 29908 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 29872 "parsing/parser.ml" +# 29914 "parsing/parser.ml" in let kind_priv_manifest = -# 3421 "parsing/parser.mly" +# 3428 "parsing/parser.mly" ( _2 ) -# 29878 "parsing/parser.ml" +# 29920 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -29882,24 +29924,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29888 "parsing/parser.ml" +# 29930 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 29896 "parsing/parser.ml" +# 29938 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3372 "parsing/parser.mly" +# 3379 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -29909,13 +29951,13 @@ module Tables = struct Type.mk id ~params ~constraints ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 29913 "parsing/parser.ml" +# 29955 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 29919 "parsing/parser.ml" +# 29961 "parsing/parser.ml" : (Parsetree.type_declaration list)) in { @@ -29934,7 +29976,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 216 "" ( [] ) -# 29938 "parsing/parser.ml" +# 29980 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29966,7 +30008,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 219 "" ( x :: xs ) -# 29970 "parsing/parser.ml" +# 30012 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29984,7 +30026,7 @@ module Tables = struct let _v : (Parsetree.signature_item list list) = # 216 "" ( [] ) -# 29988 "parsing/parser.ml" +# 30030 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30018,21 +30060,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1022 "parsing/parser.mly" +# 1024 "parsing/parser.mly" ( text_sig _startpos ) -# 30024 "parsing/parser.ml" +# 30066 "parsing/parser.ml" in -# 1796 "parsing/parser.mly" +# 1801 "parsing/parser.mly" ( _1 ) -# 30030 "parsing/parser.ml" +# 30072 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30036 "parsing/parser.ml" +# 30078 "parsing/parser.ml" : (Parsetree.signature_item list list)) in { @@ -30067,21 +30109,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1020 "parsing/parser.mly" +# 1022 "parsing/parser.mly" ( text_sig _startpos @ [_1] ) -# 30073 "parsing/parser.ml" +# 30115 "parsing/parser.ml" in -# 1796 "parsing/parser.mly" +# 1801 "parsing/parser.mly" ( _1 ) -# 30079 "parsing/parser.ml" +# 30121 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30085 "parsing/parser.ml" +# 30127 "parsing/parser.ml" : (Parsetree.signature_item list list)) in { @@ -30100,7 +30142,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 216 "" ( [] ) -# 30104 "parsing/parser.ml" +# 30146 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30134,40 +30176,40 @@ module Tables = struct let _1 = let ys = let items = -# 1078 "parsing/parser.mly" +# 1080 "parsing/parser.mly" ( [] ) -# 30140 "parsing/parser.ml" +# 30182 "parsing/parser.ml" in -# 1529 "parsing/parser.mly" +# 1534 "parsing/parser.mly" ( items ) -# 30145 "parsing/parser.ml" +# 30187 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1018 "parsing/parser.mly" +# 1020 "parsing/parser.mly" ( text_str _startpos ) -# 30153 "parsing/parser.ml" +# 30195 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 30159 "parsing/parser.ml" +# 30201 "parsing/parser.ml" in -# 1545 "parsing/parser.mly" +# 1550 "parsing/parser.mly" ( _1 ) -# 30165 "parsing/parser.ml" +# 30207 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30171 "parsing/parser.ml" +# 30213 "parsing/parser.ml" : (Parsetree.structure_item list list)) in { @@ -30221,70 +30263,70 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 30227 "parsing/parser.ml" +# 30269 "parsing/parser.ml" in -# 1536 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( mkstrexp e attrs ) -# 30232 "parsing/parser.ml" +# 30274 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1016 "parsing/parser.mly" +# 1018 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 30240 "parsing/parser.ml" +# 30282 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1035 "parsing/parser.mly" +# 1037 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 30250 "parsing/parser.ml" +# 30292 "parsing/parser.ml" in -# 1080 "parsing/parser.mly" +# 1082 "parsing/parser.mly" ( x ) -# 30256 "parsing/parser.ml" +# 30298 "parsing/parser.ml" in -# 1529 "parsing/parser.mly" +# 1534 "parsing/parser.mly" ( items ) -# 30262 "parsing/parser.ml" +# 30304 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1018 "parsing/parser.mly" +# 1020 "parsing/parser.mly" ( text_str _startpos ) -# 30270 "parsing/parser.ml" +# 30312 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 30276 "parsing/parser.ml" +# 30318 "parsing/parser.ml" in -# 1545 "parsing/parser.mly" +# 1550 "parsing/parser.mly" ( _1 ) -# 30282 "parsing/parser.ml" +# 30324 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30288 "parsing/parser.ml" +# 30330 "parsing/parser.ml" : (Parsetree.structure_item list list)) in { @@ -30319,21 +30361,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1016 "parsing/parser.mly" +# 1018 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 30325 "parsing/parser.ml" +# 30367 "parsing/parser.ml" in -# 1545 "parsing/parser.mly" +# 1550 "parsing/parser.mly" ( _1 ) -# 30331 "parsing/parser.ml" +# 30373 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30337 "parsing/parser.ml" +# 30379 "parsing/parser.ml" : (Parsetree.structure_item list list)) in { @@ -30352,7 +30394,7 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = # 216 "" ( [] ) -# 30356 "parsing/parser.ml" +# 30398 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30385,15 +30427,15 @@ module Tables = struct let x = let _startpos = _startpos__1_ in -# 1030 "parsing/parser.mly" +# 1032 "parsing/parser.mly" ( text_csig _startpos @ [_1] ) -# 30391 "parsing/parser.ml" +# 30433 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30397 "parsing/parser.ml" +# 30439 "parsing/parser.ml" : (Parsetree.class_type_field list list)) in { @@ -30412,7 +30454,7 @@ module Tables = struct let _v : (Parsetree.class_field list list) = # 216 "" ( [] ) -# 30416 "parsing/parser.ml" +# 30458 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30445,15 +30487,15 @@ module Tables = struct let x = let _startpos = _startpos__1_ in -# 1028 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( text_cstr _startpos @ [_1] ) -# 30451 "parsing/parser.ml" +# 30493 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30457 "parsing/parser.ml" +# 30499 "parsing/parser.ml" : (Parsetree.class_field list list)) in { @@ -30472,7 +30514,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 216 "" ( [] ) -# 30476 "parsing/parser.ml" +# 30518 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30505,15 +30547,15 @@ module Tables = struct let x = let _startpos = _startpos__1_ in -# 1016 "parsing/parser.mly" +# 1018 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 30511 "parsing/parser.ml" +# 30553 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30517 "parsing/parser.ml" +# 30559 "parsing/parser.ml" : (Parsetree.structure_item list list)) in { @@ -30532,7 +30574,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = # 216 "" ( [] ) -# 30536 "parsing/parser.ml" +# 30578 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30566,32 +30608,32 @@ module Tables = struct let _1 = let x = let _1 = -# 1078 "parsing/parser.mly" +# 1080 "parsing/parser.mly" ( [] ) -# 30572 "parsing/parser.ml" +# 30614 "parsing/parser.ml" in -# 1331 "parsing/parser.mly" +# 1333 "parsing/parser.mly" ( _1 ) -# 30577 "parsing/parser.ml" +# 30619 "parsing/parser.ml" in # 188 "" ( x ) -# 30583 "parsing/parser.ml" +# 30625 "parsing/parser.ml" in -# 1343 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( _1 ) -# 30589 "parsing/parser.ml" +# 30631 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30595 "parsing/parser.ml" +# 30637 "parsing/parser.ml" : (Parsetree.toplevel_phrase list list)) in { @@ -30645,58 +30687,58 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 30651 "parsing/parser.ml" +# 30693 "parsing/parser.ml" in -# 1536 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( mkstrexp e attrs ) -# 30656 "parsing/parser.ml" +# 30698 "parsing/parser.ml" in -# 1026 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( Ptop_def [_1] ) -# 30662 "parsing/parser.ml" +# 30704 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1024 "parsing/parser.mly" +# 1026 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 30670 "parsing/parser.ml" +# 30712 "parsing/parser.ml" in -# 1080 "parsing/parser.mly" +# 1082 "parsing/parser.mly" ( x ) -# 30676 "parsing/parser.ml" +# 30718 "parsing/parser.ml" in -# 1331 "parsing/parser.mly" +# 1333 "parsing/parser.mly" ( _1 ) -# 30682 "parsing/parser.ml" +# 30724 "parsing/parser.ml" in # 188 "" ( x ) -# 30688 "parsing/parser.ml" +# 30730 "parsing/parser.ml" in -# 1343 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( _1 ) -# 30694 "parsing/parser.ml" +# 30736 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30700 "parsing/parser.ml" +# 30742 "parsing/parser.ml" : (Parsetree.toplevel_phrase list list)) in { @@ -30730,27 +30772,27 @@ module Tables = struct let x = let _1 = let _1 = -# 1026 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( Ptop_def [_1] ) -# 30736 "parsing/parser.ml" +# 30778 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1024 "parsing/parser.mly" +# 1026 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 30742 "parsing/parser.ml" +# 30784 "parsing/parser.ml" in -# 1343 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( _1 ) -# 30748 "parsing/parser.ml" +# 30790 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30754 "parsing/parser.ml" +# 30796 "parsing/parser.ml" : (Parsetree.toplevel_phrase list list)) in { @@ -30787,29 +30829,29 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1035 "parsing/parser.mly" +# 1037 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 30794 "parsing/parser.ml" +# 30836 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1024 "parsing/parser.mly" +# 1026 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 30801 "parsing/parser.ml" +# 30843 "parsing/parser.ml" in -# 1343 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( _1 ) -# 30807 "parsing/parser.ml" +# 30849 "parsing/parser.ml" in ( # 219 "" ( x :: xs ) -# 30813 "parsing/parser.ml" +# 30855 "parsing/parser.ml" : (Parsetree.toplevel_phrase list list)) in { @@ -30850,7 +30892,7 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 30854 "parsing/parser.ml" +# 30896 "parsing/parser.ml" in let x = let label = @@ -30858,9 +30900,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30864 "parsing/parser.ml" +# 30906 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -30868,7 +30910,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3232 "parsing/parser.mly" +# 3239 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -30882,13 +30924,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 30886 "parsing/parser.ml" +# 30928 "parsing/parser.ml" in ( -# 1268 "parsing/parser.mly" +# 1270 "parsing/parser.mly" ( [x], None ) -# 30892 "parsing/parser.ml" +# 30934 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { @@ -30936,7 +30978,7 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 30940 "parsing/parser.ml" +# 30982 "parsing/parser.ml" in let x = let label = @@ -30944,9 +30986,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30950 "parsing/parser.ml" +# 30992 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -30954,7 +30996,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3232 "parsing/parser.mly" +# 3239 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -30968,13 +31010,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 30972 "parsing/parser.ml" +# 31014 "parsing/parser.ml" in ( -# 1268 "parsing/parser.mly" +# 1270 "parsing/parser.mly" ( [x], None ) -# 30978 "parsing/parser.ml" +# 31020 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { @@ -31039,9 +31081,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31045 "parsing/parser.ml" +# 31087 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -31049,7 +31091,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3232 "parsing/parser.mly" +# 3239 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -31063,13 +31105,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 31067 "parsing/parser.ml" +# 31109 "parsing/parser.ml" in ( -# 1270 "parsing/parser.mly" +# 1272 "parsing/parser.mly" ( [x], Some y ) -# 31073 "parsing/parser.ml" +# 31115 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { @@ -31127,9 +31169,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31133 "parsing/parser.ml" +# 31175 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -31137,7 +31179,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3232 "parsing/parser.mly" +# 3239 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -31151,14 +31193,14 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 31155 "parsing/parser.ml" +# 31197 "parsing/parser.ml" in ( -# 1274 "parsing/parser.mly" +# 1276 "parsing/parser.mly" ( let xs, y = tail in x :: xs, y ) -# 31162 "parsing/parser.ml" +# 31204 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { @@ -31194,9 +31236,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 31200 "parsing/parser.ml" +# 31242 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -31204,9 +31246,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1565 "parsing/parser.mly" +# 1570 "parsing/parser.mly" ( pstr_extension _1 (add_docs_attrs (symbol_docs _sloc) _2) ) -# 31210 "parsing/parser.ml" +# 31252 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -31214,15 +31256,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31220 "parsing/parser.ml" +# 31262 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31226 "parsing/parser.ml" +# 31268 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31248,23 +31290,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1567 "parsing/parser.mly" +# 1572 "parsing/parser.mly" ( pstr_attribute _1 ) -# 31254 "parsing/parser.ml" +# 31296 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31262 "parsing/parser.ml" +# 31304 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31268 "parsing/parser.ml" +# 31310 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31290,23 +31332,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1569 "parsing/parser.mly" +# 1574 "parsing/parser.mly" ( pstr_primitive _1 ) -# 31296 "parsing/parser.ml" +# 31338 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31304 "parsing/parser.ml" +# 31346 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31310 "parsing/parser.ml" +# 31352 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31332,23 +31374,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1571 "parsing/parser.mly" +# 1576 "parsing/parser.mly" ( pstr_val _1 ) -# 31338 "parsing/parser.ml" +# 31380 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31346 "parsing/parser.ml" +# 31388 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31352 "parsing/parser.ml" +# 31394 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31385,26 +31427,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 31391 "parsing/parser.ml" +# 31433 "parsing/parser.ml" in -# 3338 "parsing/parser.mly" +# 3345 "parsing/parser.mly" ( _1 ) -# 31396 "parsing/parser.ml" +# 31438 "parsing/parser.ml" in -# 3321 "parsing/parser.mly" +# 3328 "parsing/parser.mly" ( _1 ) -# 31402 "parsing/parser.ml" +# 31444 "parsing/parser.ml" in -# 1573 "parsing/parser.mly" +# 1578 "parsing/parser.mly" ( pstr_type _1 ) -# 31408 "parsing/parser.ml" +# 31450 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -31412,15 +31454,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31418 "parsing/parser.ml" +# 31460 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31424 "parsing/parser.ml" +# 31466 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31507,16 +31549,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 31513 "parsing/parser.ml" +# 31555 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1252 "parsing/parser.mly" +# 1254 "parsing/parser.mly" ( List.rev xs ) -# 31520 "parsing/parser.ml" +# 31562 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -31524,47 +31566,47 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31530 "parsing/parser.ml" +# 31572 "parsing/parser.ml" in let _4 = -# 4231 "parsing/parser.mly" +# 4240 "parsing/parser.mly" ( Recursive ) -# 31536 "parsing/parser.ml" +# 31578 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 31543 "parsing/parser.ml" +# 31585 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3593 "parsing/parser.mly" +# 3600 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 31556 "parsing/parser.ml" +# 31598 "parsing/parser.ml" in -# 3576 "parsing/parser.mly" +# 3583 "parsing/parser.mly" ( _1 ) -# 31562 "parsing/parser.ml" +# 31604 "parsing/parser.ml" in -# 1575 "parsing/parser.mly" +# 1580 "parsing/parser.mly" ( pstr_typext _1 ) -# 31568 "parsing/parser.ml" +# 31610 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -31572,15 +31614,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31578 "parsing/parser.ml" +# 31620 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31584 "parsing/parser.ml" +# 31626 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31674,16 +31716,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 31680 "parsing/parser.ml" +# 31722 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1252 "parsing/parser.mly" +# 1254 "parsing/parser.mly" ( List.rev xs ) -# 31687 "parsing/parser.ml" +# 31729 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -31691,9 +31733,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31697 "parsing/parser.ml" +# 31739 "parsing/parser.ml" in let _4 = @@ -31702,42 +31744,42 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4233 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 31708 "parsing/parser.ml" +# 31750 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 31716 "parsing/parser.ml" +# 31758 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3593 "parsing/parser.mly" +# 3600 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 31729 "parsing/parser.ml" +# 31771 "parsing/parser.ml" in -# 3576 "parsing/parser.mly" +# 3583 "parsing/parser.mly" ( _1 ) -# 31735 "parsing/parser.ml" +# 31777 "parsing/parser.ml" in -# 1575 "parsing/parser.mly" +# 1580 "parsing/parser.mly" ( pstr_typext _1 ) -# 31741 "parsing/parser.ml" +# 31783 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -31745,15 +31787,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31751 "parsing/parser.ml" +# 31793 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31757 "parsing/parser.ml" +# 31799 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31779,23 +31821,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1577 "parsing/parser.mly" +# 1582 "parsing/parser.mly" ( pstr_exception _1 ) -# 31785 "parsing/parser.ml" +# 31827 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31793 "parsing/parser.ml" +# 31835 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31799 "parsing/parser.ml" +# 31841 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31876,9 +31918,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 31882 "parsing/parser.ml" +# 31924 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -31888,24 +31930,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31894 "parsing/parser.ml" +# 31936 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 31902 "parsing/parser.ml" +# 31944 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1640 "parsing/parser.mly" +# 1645 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -31913,25 +31955,25 @@ module Tables = struct ext, Mb.mk name body ~attrs ~loc ~docs ) -# 31917 "parsing/parser.ml" +# 31959 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 31923 "parsing/parser.ml" +# 31965 "parsing/parser.ml" in -# 1628 "parsing/parser.mly" +# 1633 "parsing/parser.mly" ( _1 ) -# 31929 "parsing/parser.ml" +# 31971 "parsing/parser.ml" in -# 1579 "parsing/parser.mly" +# 1584 "parsing/parser.mly" ( pstr_recmodule _1 ) -# 31935 "parsing/parser.ml" +# 31977 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -31939,15 +31981,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31945 "parsing/parser.ml" +# 31987 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31951 "parsing/parser.ml" +# 31993 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -31973,23 +32015,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1581 "parsing/parser.mly" +# 1586 "parsing/parser.mly" ( pstr_modtype _1 ) -# 31979 "parsing/parser.ml" +# 32021 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 31987 "parsing/parser.ml" +# 32029 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 31993 "parsing/parser.ml" +# 32035 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -32062,7 +32104,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 32066 "parsing/parser.ml" +# 32108 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -32081,9 +32123,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 32087 "parsing/parser.ml" +# 32129 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -32093,24 +32135,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32099 "parsing/parser.ml" +# 32141 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32107 "parsing/parser.ml" +# 32149 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1978 "parsing/parser.mly" +# 1983 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -32118,25 +32160,25 @@ module Tables = struct ext, Ci.mk id body ~virt ~params ~attrs ~loc ~docs ) -# 32122 "parsing/parser.ml" +# 32164 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 32128 "parsing/parser.ml" +# 32170 "parsing/parser.ml" in -# 1967 "parsing/parser.mly" +# 1972 "parsing/parser.mly" ( _1 ) -# 32134 "parsing/parser.ml" +# 32176 "parsing/parser.ml" in -# 1583 "parsing/parser.mly" +# 1588 "parsing/parser.mly" ( pstr_class _1 ) -# 32140 "parsing/parser.ml" +# 32182 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -32144,55 +32186,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" - ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 32150 "parsing/parser.ml" - - in - ( -# 1593 "parsing/parser.mly" - ( _1 ) -# 32156 "parsing/parser.ml" - : (Parsetree.structure_item)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (string Asttypes.loc option * Parsetree.class_type_declaration list) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = - let _1 = -# 1585 "parsing/parser.mly" - ( pstr_class_type _1 ) -# 32184 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) # 32192 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) # 32198 "parsing/parser.ml" : (Parsetree.structure_item)) @@ -32213,28 +32213,28 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.type_exception * string Asttypes.loc option) = Obj.magic _1 in + let _1 : (string Asttypes.loc option * Parsetree.class_type_declaration list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v = let _1 = let _1 = -# 1587 "parsing/parser.mly" - ( pstr_exception _1 ) +# 1590 "parsing/parser.mly" + ( pstr_class_type _1 ) # 32226 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) # 32234 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) # 32240 "parsing/parser.ml" : (Parsetree.structure_item)) @@ -32246,6 +32246,48 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.type_exception * string Asttypes.loc option) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = +# 1592 "parsing/parser.mly" + ( pstr_exception _1 ) +# 32268 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1066 "parsing/parser.mly" + ( wrap_mkstr_ext ~loc:_sloc _1 ) +# 32276 "parsing/parser.ml" + + in + ( +# 1598 "parsing/parser.mly" + ( _1 ) +# 32282 "parsing/parser.ml" + : (Parsetree.structure_item)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { @@ -32301,9 +32343,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 32307 "parsing/parser.ml" +# 32349 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -32313,36 +32355,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32319 "parsing/parser.ml" +# 32361 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32327 "parsing/parser.ml" +# 32369 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1603 "parsing/parser.mly" +# 1608 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in let body = Mb.mk name body ~attrs ~loc ~docs in body, ext ) -# 32340 "parsing/parser.ml" +# 32382 "parsing/parser.ml" in -# 1589 "parsing/parser.mly" +# 1594 "parsing/parser.mly" ( pstr_module _1 ) -# 32346 "parsing/parser.ml" +# 32388 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -32350,15 +32392,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 32356 "parsing/parser.ml" +# 32398 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 32362 "parsing/parser.ml" +# 32404 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -32384,23 +32426,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1591 "parsing/parser.mly" +# 1596 "parsing/parser.mly" ( pstr_open _1 ) -# 32390 "parsing/parser.ml" +# 32432 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 32398 "parsing/parser.ml" +# 32440 "parsing/parser.ml" in ( -# 1593 "parsing/parser.mly" +# 1598 "parsing/parser.mly" ( _1 ) -# 32404 "parsing/parser.ml" +# 32446 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -32438,9 +32480,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.case) = -# 2839 "parsing/parser.mly" +# 2846 "parsing/parser.mly" ( Exp.case _1 _3 ) -# 32444 "parsing/parser.ml" +# 32486 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32491,9 +32533,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.case) = -# 2841 "parsing/parser.mly" +# 2848 "parsing/parser.mly" ( Exp.case _1 ~guard:_3 _5 ) -# 32497 "parsing/parser.ml" +# 32539 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32532,9 +32574,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 2843 "parsing/parser.mly" +# 2850 "parsing/parser.mly" ( Exp.case _1 (Exp.unreachable ~loc:(make_loc _loc__3_) ()) ) -# 32538 "parsing/parser.ml" +# 32580 "parsing/parser.ml" : (Parsetree.case)) in { @@ -32598,7 +32640,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 32602 "parsing/parser.ml" +# 32644 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -32608,49 +32650,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32614 "parsing/parser.ml" +# 32656 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32623 "parsing/parser.ml" +# 32665 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3691 "parsing/parser.mly" +# 3700 "parsing/parser.mly" ( _1 ) -# 32632 "parsing/parser.ml" +# 32674 "parsing/parser.ml" in let _1 = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 32639 "parsing/parser.ml" +# 32681 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32647 "parsing/parser.ml" +# 32689 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4026 "parsing/parser.mly" +# 4035 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -32658,13 +32700,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 32662 "parsing/parser.ml" +# 32704 "parsing/parser.ml" in ( -# 4007 "parsing/parser.mly" +# 4016 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 32668 "parsing/parser.ml" +# 32710 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -32707,15 +32749,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4037 "parsing/parser.mly" +# 4046 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 32713 "parsing/parser.ml" +# 32755 "parsing/parser.ml" in ( -# 4007 "parsing/parser.mly" +# 4016 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 32719 "parsing/parser.ml" +# 32761 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -32772,7 +32814,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 32776 "parsing/parser.ml" +# 32818 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -32782,49 +32824,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32788 "parsing/parser.ml" +# 32830 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32797 "parsing/parser.ml" +# 32839 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3691 "parsing/parser.mly" +# 3700 "parsing/parser.mly" ( _1 ) -# 32806 "parsing/parser.ml" +# 32848 "parsing/parser.ml" in let _1 = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 32813 "parsing/parser.ml" +# 32855 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32821 "parsing/parser.ml" +# 32863 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4026 "parsing/parser.mly" +# 4035 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -32832,13 +32874,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 32836 "parsing/parser.ml" +# 32878 "parsing/parser.ml" in ( -# 4010 "parsing/parser.mly" +# 4019 "parsing/parser.mly" ( [head], Closed ) -# 32842 "parsing/parser.ml" +# 32884 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -32874,15 +32916,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4037 "parsing/parser.mly" +# 4046 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 32880 "parsing/parser.ml" +# 32922 "parsing/parser.ml" in ( -# 4010 "parsing/parser.mly" +# 4019 "parsing/parser.mly" ( [head], Closed ) -# 32886 "parsing/parser.ml" +# 32928 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -32925,7 +32967,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 32929 "parsing/parser.ml" +# 32971 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -32935,50 +32977,50 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 32941 "parsing/parser.ml" +# 32983 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3691 "parsing/parser.mly" +# 3700 "parsing/parser.mly" ( _1 ) -# 32950 "parsing/parser.ml" +# 32992 "parsing/parser.ml" in let _1 = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 32957 "parsing/parser.ml" +# 32999 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32965 "parsing/parser.ml" +# 33007 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4019 "parsing/parser.mly" +# 4028 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _4 in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 32976 "parsing/parser.ml" +# 33018 "parsing/parser.ml" in ( -# 4013 "parsing/parser.mly" +# 4022 "parsing/parser.mly" ( [head], Closed ) -# 32982 "parsing/parser.ml" +# 33024 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -33007,15 +33049,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4037 "parsing/parser.mly" +# 4046 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 33013 "parsing/parser.ml" +# 33055 "parsing/parser.ml" in ( -# 4013 "parsing/parser.mly" +# 4022 "parsing/parser.mly" ( [head], Closed ) -# 33019 "parsing/parser.ml" +# 33061 "parsing/parser.ml" : (Parsetree.object_field list * Asttypes.closed_flag)) in { @@ -33039,9 +33081,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.object_field list * Asttypes.closed_flag) = -# 4015 "parsing/parser.mly" +# 4024 "parsing/parser.mly" ( [], Open ) -# 33045 "parsing/parser.ml" +# 33087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33088,7 +33130,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 33092 "parsing/parser.ml" +# 33134 "parsing/parser.ml" = Obj.magic _1_inlined1 in let private_ : (Asttypes.private_flag) = Obj.magic private_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -33099,41 +33141,41 @@ module Tables = struct let ty = let _1 = _1_inlined2 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) -# 33105 "parsing/parser.ml" +# 33147 "parsing/parser.ml" in let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33113 "parsing/parser.ml" +# 33155 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33121 "parsing/parser.ml" +# 33163 "parsing/parser.ml" in let attrs = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33127 "parsing/parser.ml" +# 33169 "parsing/parser.ml" in let _1 = -# 4289 "parsing/parser.mly" +# 4298 "parsing/parser.mly" ( Fresh ) -# 33132 "parsing/parser.ml" +# 33174 "parsing/parser.ml" in ( -# 2132 "parsing/parser.mly" +# 2137 "parsing/parser.mly" ( (label, private_, Cfk_virtual ty), attrs ) -# 33137 "parsing/parser.ml" +# 33179 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33176,7 +33218,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 33180 "parsing/parser.ml" +# 33222 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -33187,36 +33229,36 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33193 "parsing/parser.ml" +# 33235 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33201 "parsing/parser.ml" +# 33243 "parsing/parser.ml" in let _2 = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33207 "parsing/parser.ml" +# 33249 "parsing/parser.ml" in let _1 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 33212 "parsing/parser.ml" +# 33254 "parsing/parser.ml" in ( -# 2134 "parsing/parser.mly" +# 2139 "parsing/parser.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 33220 "parsing/parser.ml" +# 33262 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33265,7 +33307,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 33269 "parsing/parser.ml" +# 33311 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -33277,39 +33319,39 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33283 "parsing/parser.ml" +# 33325 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33291 "parsing/parser.ml" +# 33333 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33299 "parsing/parser.ml" +# 33341 "parsing/parser.ml" in let _1 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 33305 "parsing/parser.ml" +# 33347 "parsing/parser.ml" in ( -# 2134 "parsing/parser.mly" +# 2139 "parsing/parser.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 33313 "parsing/parser.ml" +# 33355 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33373,7 +33415,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 33377 "parsing/parser.ml" +# 33419 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -33384,45 +33426,45 @@ module Tables = struct let _6 = let _1 = _1_inlined2 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) -# 33390 "parsing/parser.ml" +# 33432 "parsing/parser.ml" in let _startpos__6_ = _startpos__1_inlined2_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33399 "parsing/parser.ml" +# 33441 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33407 "parsing/parser.ml" +# 33449 "parsing/parser.ml" in let _2 = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33413 "parsing/parser.ml" +# 33455 "parsing/parser.ml" in let _1 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 33418 "parsing/parser.ml" +# 33460 "parsing/parser.ml" in ( -# 2140 "parsing/parser.mly" +# 2145 "parsing/parser.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 33426 "parsing/parser.ml" +# 33468 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33492,7 +33534,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 33496 "parsing/parser.ml" +# 33538 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -33504,48 +33546,48 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 3687 "parsing/parser.mly" +# 3696 "parsing/parser.mly" ( _1 ) -# 33510 "parsing/parser.ml" +# 33552 "parsing/parser.ml" in let _startpos__6_ = _startpos__1_inlined3_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33519 "parsing/parser.ml" +# 33561 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33527 "parsing/parser.ml" +# 33569 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33535 "parsing/parser.ml" +# 33577 "parsing/parser.ml" in let _1 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 33541 "parsing/parser.ml" +# 33583 "parsing/parser.ml" in ( -# 2140 "parsing/parser.mly" +# 2145 "parsing/parser.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 33549 "parsing/parser.ml" +# 33591 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33630,7 +33672,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 33634 "parsing/parser.ml" +# 33676 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -33639,38 +33681,38 @@ module Tables = struct let _endpos = _endpos__11_ in let _v = let _7 = -# 2716 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( xs ) -# 33645 "parsing/parser.ml" +# 33687 "parsing/parser.ml" in let _startpos__7_ = _startpos_xs_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33653 "parsing/parser.ml" +# 33695 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33661 "parsing/parser.ml" +# 33703 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33668 "parsing/parser.ml" +# 33710 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 33674 "parsing/parser.ml" +# 33716 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__11_ in @@ -33686,7 +33728,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2146 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -33697,7 +33739,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 33701 "parsing/parser.ml" +# 33743 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33788,7 +33830,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 33792 "parsing/parser.ml" +# 33834 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -33798,41 +33840,41 @@ module Tables = struct let _endpos = _endpos__11_ in let _v = let _7 = -# 2716 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( xs ) -# 33804 "parsing/parser.ml" +# 33846 "parsing/parser.ml" in let _startpos__7_ = _startpos_xs_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 33812 "parsing/parser.ml" +# 33854 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33820 "parsing/parser.ml" +# 33862 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 33829 "parsing/parser.ml" +# 33871 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 33836 "parsing/parser.ml" +# 33878 "parsing/parser.ml" in let _endpos = _endpos__11_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -33847,7 +33889,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2146 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -33858,7 +33900,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 33862 "parsing/parser.ml" +# 33904 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -33882,15 +33924,15 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 33886 "parsing/parser.ml" +# 33928 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 33894 "parsing/parser.ml" +# 33936 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33923,7 +33965,7 @@ module Tables = struct let _3 : # 825 "parsing/parser.mly" (string) -# 33927 "parsing/parser.ml" +# 33969 "parsing/parser.ml" = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -33934,9 +33976,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 33940 "parsing/parser.ml" +# 33982 "parsing/parser.ml" : (Longident.t)) in { @@ -33958,15 +34000,15 @@ module Tables = struct let _1 : # 876 "parsing/parser.mly" (string) -# 33962 "parsing/parser.ml" +# 34004 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 33970 "parsing/parser.ml" +# 34012 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33999,7 +34041,7 @@ module Tables = struct let _3 : # 876 "parsing/parser.mly" (string) -# 34003 "parsing/parser.ml" +# 34045 "parsing/parser.ml" = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -34010,9 +34052,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34016 "parsing/parser.ml" +# 34058 "parsing/parser.ml" : (Longident.t)) in { @@ -34037,14 +34079,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34043 "parsing/parser.ml" +# 34085 "parsing/parser.ml" in ( -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34048 "parsing/parser.ml" +# 34090 "parsing/parser.ml" : (Longident.t)) in { @@ -34084,20 +34126,20 @@ module Tables = struct let _v = let _1 = let _1 = -# 4125 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( "::" ) -# 34090 "parsing/parser.ml" +# 34132 "parsing/parser.ml" in -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34095 "parsing/parser.ml" +# 34137 "parsing/parser.ml" in ( -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34101 "parsing/parser.ml" +# 34143 "parsing/parser.ml" : (Longident.t)) in { @@ -34122,14 +34164,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34128 "parsing/parser.ml" +# 34170 "parsing/parser.ml" in ( -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34133 "parsing/parser.ml" +# 34175 "parsing/parser.ml" : (Longident.t)) in { @@ -34170,18 +34212,18 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34176 "parsing/parser.ml" +# 34218 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34185 "parsing/parser.ml" +# 34227 "parsing/parser.ml" : (Longident.t)) in { @@ -34235,23 +34277,23 @@ module Tables = struct let _v = let _3 = let _1 = -# 4125 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( "::" ) -# 34241 "parsing/parser.ml" +# 34283 "parsing/parser.ml" in -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34246 "parsing/parser.ml" +# 34288 "parsing/parser.ml" in let _startpos__3_ = _startpos__1_inlined1_ in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34255 "parsing/parser.ml" +# 34297 "parsing/parser.ml" : (Longident.t)) in { @@ -34292,18 +34334,18 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4183 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( _1 ) -# 34298 "parsing/parser.ml" +# 34340 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34307 "parsing/parser.ml" +# 34349 "parsing/parser.ml" : (Longident.t)) in { @@ -34327,9 +34369,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34333 "parsing/parser.ml" +# 34375 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34369,9 +34411,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34375 "parsing/parser.ml" +# 34417 "parsing/parser.ml" : (Longident.t)) in { @@ -34393,15 +34435,15 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 34397 "parsing/parser.ml" +# 34439 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34405 "parsing/parser.ml" +# 34447 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34434,7 +34476,7 @@ module Tables = struct let _3 : # 825 "parsing/parser.mly" (string) -# 34438 "parsing/parser.ml" +# 34480 "parsing/parser.ml" = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -34445,9 +34487,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34451 "parsing/parser.ml" +# 34493 "parsing/parser.ml" : (Longident.t)) in { @@ -34469,15 +34511,15 @@ module Tables = struct let _1 : # 876 "parsing/parser.mly" (string) -# 34473 "parsing/parser.ml" +# 34515 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34481 "parsing/parser.ml" +# 34523 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34510,7 +34552,7 @@ module Tables = struct let _3 : # 876 "parsing/parser.mly" (string) -# 34514 "parsing/parser.ml" +# 34556 "parsing/parser.ml" = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -34521,9 +34563,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34527 "parsing/parser.ml" +# 34569 "parsing/parser.ml" : (Longident.t)) in { @@ -34547,9 +34589,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4154 "parsing/parser.mly" ( Lident _1 ) -# 34553 "parsing/parser.ml" +# 34595 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34589,9 +34631,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4146 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( ldot _1 _loc__1_ _3 _loc__3_ ) -# 34595 "parsing/parser.ml" +# 34637 "parsing/parser.ml" : (Longident.t)) in { @@ -34615,9 +34657,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4161 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 34621 "parsing/parser.ml" +# 34663 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34667,9 +34709,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 4163 "parsing/parser.mly" +# 4172 "parsing/parser.mly" ( lapply ~loc:_sloc _1 _loc__1_ _3 _loc__3_ ) -# 34673 "parsing/parser.ml" +# 34715 "parsing/parser.ml" : (Longident.t)) in { @@ -34709,9 +34751,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 4165 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( expecting _loc__3_ "module path" ) -# 34715 "parsing/parser.ml" +# 34757 "parsing/parser.ml" : (Longident.t)) in { @@ -34735,9 +34777,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4158 "parsing/parser.mly" +# 4167 "parsing/parser.mly" ( _1 ) -# 34741 "parsing/parser.ml" +# 34783 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34767,9 +34809,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1613 "parsing/parser.mly" +# 1618 "parsing/parser.mly" ( me ) -# 34773 "parsing/parser.ml" +# 34815 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34801,9 +34843,9 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1615 "parsing/parser.mly" +# 1620 "parsing/parser.mly" ( expecting _loc__1_ "=" ) -# 34807 "parsing/parser.ml" +# 34849 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -34850,24 +34892,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1618 "parsing/parser.mly" +# 1623 "parsing/parser.mly" ( Pmod_constraint(me, mty) ) -# 34856 "parsing/parser.ml" +# 34898 "parsing/parser.ml" in let _endpos__1_ = _endpos_me_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 34865 "parsing/parser.ml" +# 34907 "parsing/parser.ml" in ( -# 1622 "parsing/parser.mly" +# 1627 "parsing/parser.mly" ( _1 ) -# 34871 "parsing/parser.ml" +# 34913 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -34900,25 +34942,25 @@ module Tables = struct let _v = let _1 = let _1 = -# 1620 "parsing/parser.mly" +# 1625 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmod_functor(arg, body) ) -# 34907 "parsing/parser.ml" +# 34949 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 34916 "parsing/parser.ml" +# 34958 "parsing/parser.ml" in ( -# 1622 "parsing/parser.mly" +# 1627 "parsing/parser.mly" ( _1 ) -# 34922 "parsing/parser.ml" +# 34964 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -34949,9 +34991,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_mty_ in let _v : (Parsetree.module_type) = -# 1859 "parsing/parser.mly" +# 1864 "parsing/parser.mly" ( mty ) -# 34955 "parsing/parser.ml" +# 34997 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34983,9 +35025,9 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1861 "parsing/parser.mly" +# 1866 "parsing/parser.mly" ( expecting _loc__1_ ":" ) -# 34989 "parsing/parser.ml" +# 35031 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -35018,25 +35060,25 @@ module Tables = struct let _v = let _1 = let _1 = -# 1864 "parsing/parser.mly" +# 1869 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmty_functor(arg, body) ) -# 35025 "parsing/parser.ml" +# 35067 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1053 "parsing/parser.mly" +# 1055 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 35034 "parsing/parser.ml" +# 35076 "parsing/parser.ml" in ( -# 1867 "parsing/parser.mly" +# 1872 "parsing/parser.mly" ( _1 ) -# 35040 "parsing/parser.ml" +# 35082 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -35084,18 +35126,18 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35090 "parsing/parser.ml" +# 35132 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1443 "parsing/parser.mly" +# 1445 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) -# 35099 "parsing/parser.ml" +# 35141 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35143,17 +35185,17 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35149 "parsing/parser.ml" +# 35191 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1445 "parsing/parser.mly" +# 1447 "parsing/parser.mly" ( unclosed "struct" _loc__1_ "end" _loc__4_ ) -# 35157 "parsing/parser.ml" +# 35199 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35186,9 +35228,9 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1447 "parsing/parser.mly" +# 1449 "parsing/parser.mly" ( expecting _loc__1_ "struct" ) -# 35192 "parsing/parser.ml" +# 35234 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35243,30 +35285,30 @@ module Tables = struct let args = let _1 = _1_inlined2 in -# 1409 "parsing/parser.mly" +# 1411 "parsing/parser.mly" ( _1 ) -# 35249 "parsing/parser.ml" +# 35291 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35257 "parsing/parser.ml" +# 35299 "parsing/parser.ml" in let _endpos = _endpos_me_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1449 "parsing/parser.mly" +# 1451 "parsing/parser.mly" ( wrap_mod_attrs ~loc:_sloc attrs ( List.fold_left (fun acc (startpos, arg) -> mkmod ~loc:(startpos, _endpos) (Pmod_functor (arg, acc)) ) me args ) ) -# 35270 "parsing/parser.ml" +# 35312 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35290,9 +35332,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1455 "parsing/parser.mly" +# 1457 "parsing/parser.mly" ( me ) -# 35296 "parsing/parser.ml" +# 35338 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35322,9 +35364,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_attr_ in let _v : (Parsetree.module_expr) = -# 1457 "parsing/parser.mly" +# 1459 "parsing/parser.mly" ( Mod.attr me attr ) -# 35328 "parsing/parser.ml" +# 35370 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35354,30 +35396,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35360 "parsing/parser.ml" +# 35402 "parsing/parser.ml" in -# 1461 "parsing/parser.mly" +# 1463 "parsing/parser.mly" ( Pmod_ident x ) -# 35366 "parsing/parser.ml" +# 35408 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 35375 "parsing/parser.ml" +# 35417 "parsing/parser.ml" in ( -# 1472 "parsing/parser.mly" +# 1477 "parsing/parser.mly" ( _1 ) -# 35381 "parsing/parser.ml" +# 35423 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35410,24 +35452,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1464 "parsing/parser.mly" +# 1466 "parsing/parser.mly" ( Pmod_apply(me1, me2) ) -# 35416 "parsing/parser.ml" +# 35458 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_me2_, _startpos_me1_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 35425 "parsing/parser.ml" +# 35467 "parsing/parser.ml" in ( -# 1472 "parsing/parser.mly" +# 1477 "parsing/parser.mly" ( _1 ) -# 35431 "parsing/parser.ml" +# 35473 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35467,24 +35509,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1467 "parsing/parser.mly" +# 1469 "parsing/parser.mly" ( Pmod_apply_unit me ) -# 35473 "parsing/parser.ml" +# 35515 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 35482 "parsing/parser.ml" +# 35524 "parsing/parser.ml" in ( -# 1472 "parsing/parser.mly" +# 1477 "parsing/parser.mly" ( _1 ) -# 35488 "parsing/parser.ml" +# 35530 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35510,24 +35552,66 @@ module Tables = struct let _v = let _1 = let _1 = -# 1470 "parsing/parser.mly" +# 1472 "parsing/parser.mly" ( Pmod_extension ex ) -# 35516 "parsing/parser.ml" +# 35558 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_ex_, _startpos_ex_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1051 "parsing/parser.mly" +# 1053 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 35525 "parsing/parser.ml" +# 35567 "parsing/parser.ml" in ( -# 1472 "parsing/parser.mly" +# 1477 "parsing/parser.mly" + ( _1 ) +# 35573 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = +# 1475 "parsing/parser.mly" + ( Pmod_hole ) +# 35601 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1053 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 35609 "parsing/parser.ml" + + in + ( +# 1477 "parsing/parser.mly" ( _1 ) -# 35531 "parsing/parser.ml" +# 35615 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -35549,15 +35633,15 @@ module Tables = struct let x : # 876 "parsing/parser.mly" (string) -# 35553 "parsing/parser.ml" +# 35637 "parsing/parser.ml" = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (string option) = -# 1426 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( Some x ) -# 35561 "parsing/parser.ml" +# 35645 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35580,9 +35664,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string option) = -# 1429 "parsing/parser.mly" +# 1431 "parsing/parser.mly" ( None ) -# 35586 "parsing/parser.ml" +# 35670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35642,7 +35726,7 @@ module Tables = struct let _1_inlined2 : # 876 "parsing/parser.mly" (string) -# 35646 "parsing/parser.ml" +# 35730 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let ext : (string Asttypes.loc option) = Obj.magic ext in @@ -35654,9 +35738,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 35660 "parsing/parser.ml" +# 35744 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -35666,9 +35750,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35672 "parsing/parser.ml" +# 35756 "parsing/parser.ml" in let uid = @@ -35677,31 +35761,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35683 "parsing/parser.ml" +# 35767 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35691 "parsing/parser.ml" +# 35775 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1897 "parsing/parser.mly" +# 1902 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Ms.mk uid body ~attrs ~loc ~docs, ext ) -# 35705 "parsing/parser.ml" +# 35789 "parsing/parser.ml" : (Parsetree.module_substitution * string Asttypes.loc option)) in { @@ -35755,7 +35839,7 @@ module Tables = struct let _1_inlined2 : # 876 "parsing/parser.mly" (string) -# 35759 "parsing/parser.ml" +# 35843 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _2 : (string Asttypes.loc option) = Obj.magic _2 in @@ -35770,24 +35854,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35776 "parsing/parser.ml" +# 35860 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35784 "parsing/parser.ml" +# 35868 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in ( -# 1904 "parsing/parser.mly" +# 1909 "parsing/parser.mly" ( expecting _loc__6_ "module path" ) -# 35791 "parsing/parser.ml" +# 35875 "parsing/parser.ml" : (Parsetree.module_substitution * string Asttypes.loc option)) in { @@ -35835,18 +35919,18 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35841 "parsing/parser.ml" +# 35925 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1747 "parsing/parser.mly" +# 1752 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) -# 35850 "parsing/parser.ml" +# 35934 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -35894,17 +35978,17 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 35900 "parsing/parser.ml" +# 35984 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1749 "parsing/parser.mly" +# 1754 "parsing/parser.mly" ( unclosed "sig" _loc__1_ "end" _loc__4_ ) -# 35908 "parsing/parser.ml" +# 35992 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -35937,9 +36021,9 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1751 "parsing/parser.mly" +# 1756 "parsing/parser.mly" ( expecting _loc__1_ "sig" ) -# 35943 "parsing/parser.ml" +# 36027 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -35994,26 +36078,26 @@ module Tables = struct let args = let _1 = _1_inlined2 in -# 1409 "parsing/parser.mly" +# 1411 "parsing/parser.mly" ( _1 ) -# 36000 "parsing/parser.ml" +# 36084 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 36008 "parsing/parser.ml" +# 36092 "parsing/parser.ml" in let _endpos = _endpos_mty_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1755 "parsing/parser.mly" +# 1760 "parsing/parser.mly" ( wrap_mty_attrs ~loc:_sloc attrs (mk_functor_typ args mty) ) -# 36017 "parsing/parser.ml" +# 36101 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36052,14 +36136,14 @@ module Tables = struct let _endpos = _endpos_mty_ in let _v = let args = -# 1409 "parsing/parser.mly" +# 1411 "parsing/parser.mly" ( _1 ) -# 36058 "parsing/parser.ml" +# 36142 "parsing/parser.ml" in ( -# 1759 "parsing/parser.mly" +# 1764 "parsing/parser.mly" ( mk_functor_typ args mty ) -# 36063 "parsing/parser.ml" +# 36147 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36114,18 +36198,18 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 36120 "parsing/parser.ml" +# 36204 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1761 "parsing/parser.mly" +# 1766 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) -# 36129 "parsing/parser.ml" +# 36213 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36163,9 +36247,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = -# 1763 "parsing/parser.mly" +# 1768 "parsing/parser.mly" ( _2 ) -# 36169 "parsing/parser.ml" +# 36253 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36205,9 +36289,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1765 "parsing/parser.mly" +# 1770 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 36211 "parsing/parser.ml" +# 36295 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36238,9 +36322,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1767 "parsing/parser.mly" +# 1772 "parsing/parser.mly" ( Mty.attr _1 _2 ) -# 36244 "parsing/parser.ml" +# 36328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36270,30 +36354,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36276 "parsing/parser.ml" +# 36360 "parsing/parser.ml" in -# 1770 "parsing/parser.mly" +# 1775 "parsing/parser.mly" ( Pmty_ident _1 ) -# 36282 "parsing/parser.ml" +# 36366 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1053 "parsing/parser.mly" +# 1055 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 36291 "parsing/parser.ml" +# 36375 "parsing/parser.ml" in ( -# 1781 "parsing/parser.mly" +# 1786 "parsing/parser.mly" ( _1 ) -# 36297 "parsing/parser.ml" +# 36381 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36333,24 +36417,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1773 "parsing/parser.mly" +# 1778 "parsing/parser.mly" ( Pmty_functor(Named (mknoloc None, _1), _3) ) -# 36339 "parsing/parser.ml" +# 36423 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1053 "parsing/parser.mly" +# 1055 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 36348 "parsing/parser.ml" +# 36432 "parsing/parser.ml" in ( -# 1781 "parsing/parser.mly" +# 1786 "parsing/parser.mly" ( _1 ) -# 36354 "parsing/parser.ml" +# 36438 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36394,18 +36478,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 36398 "parsing/parser.ml" +# 36482 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 36403 "parsing/parser.ml" +# 36487 "parsing/parser.ml" in -# 1775 "parsing/parser.mly" +# 1780 "parsing/parser.mly" ( Pmty_with(_1, _3) ) -# 36409 "parsing/parser.ml" +# 36493 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -36413,15 +36497,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1053 "parsing/parser.mly" +# 1055 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 36419 "parsing/parser.ml" +# 36503 "parsing/parser.ml" in ( -# 1781 "parsing/parser.mly" +# 1786 "parsing/parser.mly" ( _1 ) -# 36425 "parsing/parser.ml" +# 36509 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36447,23 +36531,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1779 "parsing/parser.mly" +# 1784 "parsing/parser.mly" ( Pmty_extension _1 ) -# 36453 "parsing/parser.ml" +# 36537 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1053 "parsing/parser.mly" +# 1055 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 36461 "parsing/parser.ml" +# 36545 "parsing/parser.ml" in ( -# 1781 "parsing/parser.mly" +# 1786 "parsing/parser.mly" ( _1 ) -# 36467 "parsing/parser.ml" +# 36551 "parsing/parser.ml" : (Parsetree.module_type)) in { @@ -36532,9 +36616,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 36538 "parsing/parser.ml" +# 36622 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36544,31 +36628,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36550 "parsing/parser.ml" +# 36634 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 36558 "parsing/parser.ml" +# 36642 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1693 "parsing/parser.mly" +# 1698 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ?typ ~attrs ~loc ~docs, ext ) -# 36572 "parsing/parser.ml" +# 36656 "parsing/parser.ml" : (Parsetree.module_type_declaration * string Asttypes.loc option)) in { @@ -36644,9 +36728,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 36650 "parsing/parser.ml" +# 36734 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36656,31 +36740,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36662 "parsing/parser.ml" +# 36746 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 36670 "parsing/parser.ml" +# 36754 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1953 "parsing/parser.mly" +# 1958 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ~typ ~attrs ~loc ~docs, ext ) -# 36684 "parsing/parser.ml" +# 36768 "parsing/parser.ml" : (Parsetree.module_type_declaration * string Asttypes.loc option)) in { @@ -36704,9 +36788,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4168 "parsing/parser.mly" +# 4177 "parsing/parser.mly" ( _1 ) -# 36710 "parsing/parser.ml" +# 36794 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36722,9 +36806,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag) = -# 4249 "parsing/parser.mly" +# 4258 "parsing/parser.mly" ( Immutable ) -# 36728 "parsing/parser.ml" +# 36812 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36747,9 +36831,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4250 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( Mutable ) -# 36753 "parsing/parser.ml" +# 36837 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36765,9 +36849,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4258 "parsing/parser.mly" +# 4267 "parsing/parser.mly" ( Immutable, Concrete ) -# 36771 "parsing/parser.ml" +# 36855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36790,9 +36874,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4260 "parsing/parser.mly" +# 4269 "parsing/parser.mly" ( Mutable, Concrete ) -# 36796 "parsing/parser.ml" +# 36880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36815,9 +36899,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4262 "parsing/parser.mly" +# 4271 "parsing/parser.mly" ( Immutable, Virtual ) -# 36821 "parsing/parser.ml" +# 36905 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36847,9 +36931,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4265 "parsing/parser.mly" +# 4274 "parsing/parser.mly" ( Mutable, Virtual ) -# 36853 "parsing/parser.ml" +# 36937 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36879,9 +36963,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4265 "parsing/parser.mly" +# 4274 "parsing/parser.mly" ( Mutable, Virtual ) -# 36885 "parsing/parser.ml" +# 36969 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36911,9 +36995,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4220 "parsing/parser.mly" +# 4229 "parsing/parser.mly" ( _2 ) -# 36917 "parsing/parser.ml" +# 37001 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36934,7 +37018,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 36938 "parsing/parser.ml" +# 37022 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -36945,15 +37029,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36951 "parsing/parser.ml" +# 37035 "parsing/parser.ml" in ( # 228 "" ( [ x ] ) -# 36957 "parsing/parser.ml" +# 37041 "parsing/parser.ml" : (string Asttypes.loc list)) in { @@ -36982,7 +37066,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 36986 "parsing/parser.ml" +# 37070 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -36993,15 +37077,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36999 "parsing/parser.ml" +# 37083 "parsing/parser.ml" in ( # 231 "" ( x :: xs ) -# 37005 "parsing/parser.ml" +# 37089 "parsing/parser.ml" : (string Asttypes.loc list)) in { @@ -37023,21 +37107,21 @@ module Tables = struct let s : # 863 "parsing/parser.mly" (string * Location.t * string option) -# 37027 "parsing/parser.ml" +# 37111 "parsing/parser.ml" = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v = let x = -# 4216 "parsing/parser.mly" +# 4225 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 37036 "parsing/parser.ml" +# 37120 "parsing/parser.ml" in ( # 228 "" ( [ x ] ) -# 37041 "parsing/parser.ml" +# 37125 "parsing/parser.ml" : (string list)) in { @@ -37066,21 +37150,21 @@ module Tables = struct let s : # 863 "parsing/parser.mly" (string * Location.t * string option) -# 37070 "parsing/parser.ml" +# 37154 "parsing/parser.ml" = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_xs_ in let _v = let x = -# 4216 "parsing/parser.mly" +# 4225 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 37079 "parsing/parser.ml" +# 37163 "parsing/parser.ml" in ( # 231 "" ( x :: xs ) -# 37084 "parsing/parser.ml" +# 37168 "parsing/parser.ml" : (string list)) in { @@ -37105,14 +37189,14 @@ module Tables = struct let _endpos = _endpos_ty_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37111 "parsing/parser.ml" +# 37195 "parsing/parser.ml" in ( -# 3393 "parsing/parser.mly" +# 3400 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 37116 "parsing/parser.ml" +# 37200 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37144,14 +37228,14 @@ module Tables = struct let _endpos = _endpos_ty_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37150 "parsing/parser.ml" +# 37234 "parsing/parser.ml" in ( -# 3393 "parsing/parser.mly" +# 3400 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 37155 "parsing/parser.ml" +# 37239 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37176,26 +37260,26 @@ module Tables = struct let _endpos = _endpos_cs_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37182 "parsing/parser.ml" +# 37266 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37188 "parsing/parser.ml" +# 37272 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37193 "parsing/parser.ml" +# 37277 "parsing/parser.ml" in ( -# 3397 "parsing/parser.mly" +# 3404 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 37199 "parsing/parser.ml" +# 37283 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37227,26 +37311,26 @@ module Tables = struct let _endpos = _endpos_cs_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37233 "parsing/parser.ml" +# 37317 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37239 "parsing/parser.ml" +# 37323 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37244 "parsing/parser.ml" +# 37328 "parsing/parser.ml" in ( -# 3397 "parsing/parser.mly" +# 3404 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 37250 "parsing/parser.ml" +# 37334 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37285,33 +37369,33 @@ module Tables = struct let _endpos = _endpos_cs_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37291 "parsing/parser.ml" +# 37375 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37298 "parsing/parser.ml" +# 37382 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37303 "parsing/parser.ml" +# 37387 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37309 "parsing/parser.ml" +# 37393 "parsing/parser.ml" in ( -# 3397 "parsing/parser.mly" +# 3404 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 37315 "parsing/parser.ml" +# 37399 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37357,33 +37441,33 @@ module Tables = struct let _endpos = _endpos_cs_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37363 "parsing/parser.ml" +# 37447 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37370 "parsing/parser.ml" +# 37454 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37375 "parsing/parser.ml" +# 37459 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37381 "parsing/parser.ml" +# 37465 "parsing/parser.ml" in ( -# 3397 "parsing/parser.mly" +# 3404 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 37387 "parsing/parser.ml" +# 37471 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37408,26 +37492,26 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37414 "parsing/parser.ml" +# 37498 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37420 "parsing/parser.ml" +# 37504 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37425 "parsing/parser.ml" +# 37509 "parsing/parser.ml" in ( -# 3401 "parsing/parser.mly" +# 3408 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 37431 "parsing/parser.ml" +# 37515 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37459,26 +37543,26 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37465 "parsing/parser.ml" +# 37549 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37471 "parsing/parser.ml" +# 37555 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37476 "parsing/parser.ml" +# 37560 "parsing/parser.ml" in ( -# 3401 "parsing/parser.mly" +# 3408 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 37482 "parsing/parser.ml" +# 37566 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37517,33 +37601,33 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37523 "parsing/parser.ml" +# 37607 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37530 "parsing/parser.ml" +# 37614 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37535 "parsing/parser.ml" +# 37619 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37541 "parsing/parser.ml" +# 37625 "parsing/parser.ml" in ( -# 3401 "parsing/parser.mly" +# 3408 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 37547 "parsing/parser.ml" +# 37631 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37589,33 +37673,33 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37595 "parsing/parser.ml" +# 37679 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37602 "parsing/parser.ml" +# 37686 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37607 "parsing/parser.ml" +# 37691 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37613 "parsing/parser.ml" +# 37697 "parsing/parser.ml" in ( -# 3401 "parsing/parser.mly" +# 3408 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 37619 "parsing/parser.ml" +# 37703 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37654,26 +37738,26 @@ module Tables = struct let _endpos = _endpos__5_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37660 "parsing/parser.ml" +# 37744 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37666 "parsing/parser.ml" +# 37750 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37671 "parsing/parser.ml" +# 37755 "parsing/parser.ml" in ( -# 3405 "parsing/parser.mly" +# 3412 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 37677 "parsing/parser.ml" +# 37761 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37719,26 +37803,26 @@ module Tables = struct let _endpos = _endpos__5_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37725 "parsing/parser.ml" +# 37809 "parsing/parser.ml" in let oty = let _1 = # 123 "" ( None ) -# 37731 "parsing/parser.ml" +# 37815 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37736 "parsing/parser.ml" +# 37820 "parsing/parser.ml" in ( -# 3405 "parsing/parser.mly" +# 3412 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 37742 "parsing/parser.ml" +# 37826 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37791,33 +37875,33 @@ module Tables = struct let _endpos = _endpos__5_ in let _v = let priv = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 37797 "parsing/parser.ml" +# 37881 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37804 "parsing/parser.ml" +# 37888 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37809 "parsing/parser.ml" +# 37893 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37815 "parsing/parser.ml" +# 37899 "parsing/parser.ml" in ( -# 3405 "parsing/parser.mly" +# 3412 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 37821 "parsing/parser.ml" +# 37905 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37877,33 +37961,33 @@ module Tables = struct let _endpos = _endpos__5_ in let _v = let priv = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 37883 "parsing/parser.ml" +# 37967 "parsing/parser.ml" in let oty = let _1 = let x = # 196 "" ( x ) -# 37890 "parsing/parser.ml" +# 37974 "parsing/parser.ml" in # 126 "" ( Some x ) -# 37895 "parsing/parser.ml" +# 37979 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3418 "parsing/parser.mly" ( _1 ) -# 37901 "parsing/parser.ml" +# 37985 "parsing/parser.ml" in ( -# 3405 "parsing/parser.mly" +# 3412 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 37907 "parsing/parser.ml" +# 37991 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37931,7 +38015,7 @@ module Tables = struct let s : # 863 "parsing/parser.mly" (string * Location.t * string option) -# 37935 "parsing/parser.ml" +# 38019 "parsing/parser.ml" = Obj.magic s in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -37939,14 +38023,14 @@ module Tables = struct let _endpos = _endpos_s_ in let _v = let name = -# 4216 "parsing/parser.mly" +# 4225 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 37945 "parsing/parser.ml" +# 38029 "parsing/parser.ml" in ( -# 3407 "parsing/parser.mly" +# 3414 "parsing/parser.mly" ( (Ptype_external name, Public, None) ) -# 37950 "parsing/parser.ml" +# 38034 "parsing/parser.ml" : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { @@ -37986,24 +38070,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3900 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( let (f, c) = meth_list in Ptyp_object (f, c) ) -# 37992 "parsing/parser.ml" +# 38076 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 38001 "parsing/parser.ml" +# 38085 "parsing/parser.ml" in ( -# 3904 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( _1 ) -# 38007 "parsing/parser.ml" +# 38091 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -38036,24 +38120,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3902 "parsing/parser.mly" +# 3911 "parsing/parser.mly" ( Ptyp_object ([], Closed) ) -# 38042 "parsing/parser.ml" +# 38126 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 38051 "parsing/parser.ml" +# 38135 "parsing/parser.ml" in ( -# 3904 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( _1 ) -# 38057 "parsing/parser.ml" +# 38141 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -38108,37 +38192,37 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 38114 "parsing/parser.ml" +# 38198 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 38123 "parsing/parser.ml" +# 38207 "parsing/parser.ml" in let override = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 38129 "parsing/parser.ml" +# 38213 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1712 "parsing/parser.mly" +# 1717 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 38142 "parsing/parser.ml" +# 38226 "parsing/parser.ml" : (Parsetree.open_declaration * string Asttypes.loc option)) in { @@ -38200,37 +38284,37 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 38206 "parsing/parser.ml" +# 38290 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 38215 "parsing/parser.ml" +# 38299 "parsing/parser.ml" in let override = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 38221 "parsing/parser.ml" +# 38305 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1712 "parsing/parser.mly" +# 1717 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 38234 "parsing/parser.ml" +# 38318 "parsing/parser.ml" : (Parsetree.open_declaration * string Asttypes.loc option)) in { @@ -38285,9 +38369,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 38291 "parsing/parser.ml" +# 38375 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -38297,36 +38381,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 38303 "parsing/parser.ml" +# 38387 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 38311 "parsing/parser.ml" +# 38395 "parsing/parser.ml" in let override = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 38317 "parsing/parser.ml" +# 38401 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1727 "parsing/parser.mly" +# 1732 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 38330 "parsing/parser.ml" +# 38414 "parsing/parser.ml" : (Parsetree.open_description * string Asttypes.loc option)) in { @@ -38388,9 +38472,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 38394 "parsing/parser.ml" +# 38478 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -38400,36 +38484,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 38406 "parsing/parser.ml" +# 38490 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined2 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 38414 "parsing/parser.ml" +# 38498 "parsing/parser.ml" in let override = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 38420 "parsing/parser.ml" +# 38504 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1727 "parsing/parser.mly" +# 1732 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 38433 "parsing/parser.ml" +# 38517 "parsing/parser.ml" : (Parsetree.open_description * string Asttypes.loc option)) in { @@ -38451,15 +38535,15 @@ module Tables = struct let _1 : # 849 "parsing/parser.mly" (string) -# 38455 "parsing/parser.ml" +# 38539 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4084 "parsing/parser.mly" +# 4093 "parsing/parser.mly" ( _1 ) -# 38463 "parsing/parser.ml" +# 38547 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38480,15 +38564,15 @@ module Tables = struct let _1 : # 807 "parsing/parser.mly" (string) -# 38484 "parsing/parser.ml" +# 38568 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4085 "parsing/parser.mly" +# 4094 "parsing/parser.mly" ( _1 ) -# 38492 "parsing/parser.ml" +# 38576 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38509,15 +38593,15 @@ module Tables = struct let _1 : # 808 "parsing/parser.mly" (string) -# 38513 "parsing/parser.ml" +# 38597 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4086 "parsing/parser.mly" +# 4095 "parsing/parser.mly" ( _1 ) -# 38521 "parsing/parser.ml" +# 38605 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38559,15 +38643,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38563 "parsing/parser.ml" +# 38647 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4087 "parsing/parser.mly" +# 4096 "parsing/parser.mly" ( "."^ _1 ^"(" ^ _3 ^ ")" ) -# 38571 "parsing/parser.ml" +# 38655 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38616,15 +38700,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38620 "parsing/parser.ml" +# 38704 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4088 "parsing/parser.mly" +# 4097 "parsing/parser.mly" ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) -# 38628 "parsing/parser.ml" +# 38712 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38666,15 +38750,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38670 "parsing/parser.ml" +# 38754 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4089 "parsing/parser.mly" +# 4098 "parsing/parser.mly" ( "."^ _1 ^"[" ^ _3 ^ "]" ) -# 38678 "parsing/parser.ml" +# 38762 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38723,15 +38807,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38727 "parsing/parser.ml" +# 38811 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4090 "parsing/parser.mly" +# 4099 "parsing/parser.mly" ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) -# 38735 "parsing/parser.ml" +# 38819 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38773,15 +38857,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38777 "parsing/parser.ml" +# 38861 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4091 "parsing/parser.mly" +# 4100 "parsing/parser.mly" ( "."^ _1 ^"{" ^ _3 ^ "}" ) -# 38785 "parsing/parser.ml" +# 38869 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38830,15 +38914,15 @@ module Tables = struct let _1 : # 806 "parsing/parser.mly" (string) -# 38834 "parsing/parser.ml" +# 38918 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4092 "parsing/parser.mly" +# 4101 "parsing/parser.mly" ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) -# 38842 "parsing/parser.ml" +# 38926 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38859,15 +38943,15 @@ module Tables = struct let _1 : # 860 "parsing/parser.mly" (string) -# 38863 "parsing/parser.ml" +# 38947 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4093 "parsing/parser.mly" +# 4102 "parsing/parser.mly" ( _1 ) -# 38871 "parsing/parser.ml" +# 38955 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38890,9 +38974,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4094 "parsing/parser.mly" +# 4103 "parsing/parser.mly" ( "!" ) -# 38896 "parsing/parser.ml" +# 38980 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38913,21 +38997,21 @@ module Tables = struct let op : # 801 "parsing/parser.mly" (string) -# 38917 "parsing/parser.ml" +# 39001 "parsing/parser.ml" = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v = let _1 = -# 4098 "parsing/parser.mly" +# 4107 "parsing/parser.mly" ( op ) -# 38926 "parsing/parser.ml" +# 39010 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 38931 "parsing/parser.ml" +# 39015 "parsing/parser.ml" : (Asttypes.label)) in { @@ -38949,21 +39033,21 @@ module Tables = struct let op : # 802 "parsing/parser.mly" (string) -# 38953 "parsing/parser.ml" +# 39037 "parsing/parser.ml" = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v = let _1 = -# 4099 "parsing/parser.mly" +# 4108 "parsing/parser.mly" ( op ) -# 38962 "parsing/parser.ml" +# 39046 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 38967 "parsing/parser.ml" +# 39051 "parsing/parser.ml" : (Asttypes.label)) in { @@ -38985,21 +39069,21 @@ module Tables = struct let op : # 803 "parsing/parser.mly" (string) -# 38989 "parsing/parser.ml" +# 39073 "parsing/parser.ml" = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v = let _1 = -# 4100 "parsing/parser.mly" +# 4109 "parsing/parser.mly" ( op ) -# 38998 "parsing/parser.ml" +# 39082 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39003 "parsing/parser.ml" +# 39087 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39021,21 +39105,21 @@ module Tables = struct let op : # 804 "parsing/parser.mly" (string) -# 39025 "parsing/parser.ml" +# 39109 "parsing/parser.ml" = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v = let _1 = -# 4101 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( op ) -# 39034 "parsing/parser.ml" +# 39118 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39039 "parsing/parser.ml" +# 39123 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39057,21 +39141,21 @@ module Tables = struct let op : # 805 "parsing/parser.mly" (string) -# 39061 "parsing/parser.ml" +# 39145 "parsing/parser.ml" = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v = let _1 = -# 4102 "parsing/parser.mly" +# 4111 "parsing/parser.mly" ( op ) -# 39070 "parsing/parser.ml" +# 39154 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39075 "parsing/parser.ml" +# 39159 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39096,14 +39180,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4103 "parsing/parser.mly" +# 4112 "parsing/parser.mly" ("+") -# 39102 "parsing/parser.ml" +# 39186 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39107 "parsing/parser.ml" +# 39191 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39128,14 +39212,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4104 "parsing/parser.mly" +# 4113 "parsing/parser.mly" ("+.") -# 39134 "parsing/parser.ml" +# 39218 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39139 "parsing/parser.ml" +# 39223 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39160,14 +39244,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4105 "parsing/parser.mly" +# 4114 "parsing/parser.mly" ("+=") -# 39166 "parsing/parser.ml" +# 39250 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39171 "parsing/parser.ml" +# 39255 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39192,14 +39276,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4106 "parsing/parser.mly" +# 4115 "parsing/parser.mly" ("-") -# 39198 "parsing/parser.ml" +# 39282 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39203 "parsing/parser.ml" +# 39287 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39224,14 +39308,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4107 "parsing/parser.mly" +# 4116 "parsing/parser.mly" ("-.") -# 39230 "parsing/parser.ml" +# 39314 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39235 "parsing/parser.ml" +# 39319 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39256,14 +39340,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4108 "parsing/parser.mly" +# 4117 "parsing/parser.mly" ("*") -# 39262 "parsing/parser.ml" +# 39346 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39267 "parsing/parser.ml" +# 39351 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39288,14 +39372,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4109 "parsing/parser.mly" +# 4118 "parsing/parser.mly" ("%") -# 39294 "parsing/parser.ml" +# 39378 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39299 "parsing/parser.ml" +# 39383 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39320,14 +39404,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4110 "parsing/parser.mly" +# 4119 "parsing/parser.mly" ("=") -# 39326 "parsing/parser.ml" +# 39410 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39331 "parsing/parser.ml" +# 39415 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39352,14 +39436,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4111 "parsing/parser.mly" +# 4120 "parsing/parser.mly" ("<") -# 39358 "parsing/parser.ml" +# 39442 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39363 "parsing/parser.ml" +# 39447 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39384,14 +39468,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4112 "parsing/parser.mly" +# 4121 "parsing/parser.mly" (">") -# 39390 "parsing/parser.ml" +# 39474 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39395 "parsing/parser.ml" +# 39479 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39416,14 +39500,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4113 "parsing/parser.mly" +# 4122 "parsing/parser.mly" ("or") -# 39422 "parsing/parser.ml" +# 39506 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39427 "parsing/parser.ml" +# 39511 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39448,14 +39532,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4114 "parsing/parser.mly" +# 4123 "parsing/parser.mly" ("||") -# 39454 "parsing/parser.ml" +# 39538 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39459 "parsing/parser.ml" +# 39543 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39480,14 +39564,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4115 "parsing/parser.mly" +# 4124 "parsing/parser.mly" ("&") -# 39486 "parsing/parser.ml" +# 39570 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39491 "parsing/parser.ml" +# 39575 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39512,14 +39596,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4116 "parsing/parser.mly" +# 4125 "parsing/parser.mly" ("&&") -# 39518 "parsing/parser.ml" +# 39602 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39523 "parsing/parser.ml" +# 39607 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39544,14 +39628,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4117 "parsing/parser.mly" +# 4126 "parsing/parser.mly" (":=") -# 39550 "parsing/parser.ml" +# 39634 "parsing/parser.ml" in ( -# 4095 "parsing/parser.mly" +# 4104 "parsing/parser.mly" ( _1 ) -# 39555 "parsing/parser.ml" +# 39639 "parsing/parser.ml" : (Asttypes.label)) in { @@ -39575,9 +39659,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 3992 "parsing/parser.mly" +# 4001 "parsing/parser.mly" ( true ) -# 39581 "parsing/parser.ml" +# 39665 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39593,9 +39677,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (bool) = -# 3993 "parsing/parser.mly" +# 4002 "parsing/parser.mly" ( false ) -# 39599 "parsing/parser.ml" +# 39683 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39613,7 +39697,7 @@ module Tables = struct let _v : (unit option) = # 111 "" ( None ) -# 39617 "parsing/parser.ml" +# 39701 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39638,7 +39722,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( Some x ) -# 39642 "parsing/parser.ml" +# 39726 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39656,7 +39740,7 @@ module Tables = struct let _v : (unit option) = # 111 "" ( None ) -# 39660 "parsing/parser.ml" +# 39744 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39681,7 +39765,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( Some x ) -# 39685 "parsing/parser.ml" +# 39769 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39699,7 +39783,7 @@ module Tables = struct let _v : (string Asttypes.loc option) = # 111 "" ( None ) -# 39703 "parsing/parser.ml" +# 39787 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39726,7 +39810,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 39730 "parsing/parser.ml" +# 39814 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39740,21 +39824,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 39746 "parsing/parser.ml" +# 39830 "parsing/parser.ml" in # 188 "" ( x ) -# 39752 "parsing/parser.ml" +# 39836 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 39758 "parsing/parser.ml" +# 39842 "parsing/parser.ml" : (string Asttypes.loc option)) in { @@ -39773,7 +39857,7 @@ module Tables = struct let _v : (Parsetree.core_type option) = # 111 "" ( None ) -# 39777 "parsing/parser.ml" +# 39861 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39806,12 +39890,12 @@ module Tables = struct let x = # 188 "" ( x ) -# 39810 "parsing/parser.ml" +# 39894 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 39815 "parsing/parser.ml" +# 39899 "parsing/parser.ml" : (Parsetree.core_type option)) in { @@ -39830,7 +39914,7 @@ module Tables = struct let _v : (Parsetree.core_type option) = # 111 "" ( None ) -# 39834 "parsing/parser.ml" +# 39918 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39863,12 +39947,12 @@ module Tables = struct let x = # 188 "" ( x ) -# 39867 "parsing/parser.ml" +# 39951 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 39872 "parsing/parser.ml" +# 39956 "parsing/parser.ml" : (Parsetree.core_type option)) in { @@ -39887,7 +39971,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 111 "" ( None ) -# 39891 "parsing/parser.ml" +# 39975 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39921,26 +40005,26 @@ module Tables = struct let x = let _1 = _1_inlined1 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 39927 "parsing/parser.ml" +# 40011 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 39932 "parsing/parser.ml" +# 40016 "parsing/parser.ml" in # 188 "" ( x ) -# 39938 "parsing/parser.ml" +# 40022 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 39944 "parsing/parser.ml" +# 40028 "parsing/parser.ml" : (Parsetree.expression option)) in { @@ -40001,18 +40085,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 40005 "parsing/parser.ml" +# 40089 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 40010 "parsing/parser.ml" +# 40094 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 40016 "parsing/parser.ml" +# 40100 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -40021,22 +40105,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40027 "parsing/parser.ml" +# 40111 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 40033 "parsing/parser.ml" +# 40117 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -40049,25 +40133,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 40053 "parsing/parser.ml" +# 40137 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 40059 "parsing/parser.ml" +# 40143 "parsing/parser.ml" in # 188 "" ( x ) -# 40065 "parsing/parser.ml" +# 40149 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 40071 "parsing/parser.ml" +# 40155 "parsing/parser.ml" : (Parsetree.expression option)) in { @@ -40086,7 +40170,7 @@ module Tables = struct let _v : (Parsetree.module_type option) = # 111 "" ( None ) -# 40090 "parsing/parser.ml" +# 40174 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40119,12 +40203,12 @@ module Tables = struct let x = # 188 "" ( x ) -# 40123 "parsing/parser.ml" +# 40207 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 40128 "parsing/parser.ml" +# 40212 "parsing/parser.ml" : (Parsetree.module_type option)) in { @@ -40143,7 +40227,7 @@ module Tables = struct let _v : (Parsetree.pattern option) = # 111 "" ( None ) -# 40147 "parsing/parser.ml" +# 40231 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40176,12 +40260,12 @@ module Tables = struct let x = # 188 "" ( x ) -# 40180 "parsing/parser.ml" +# 40264 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 40185 "parsing/parser.ml" +# 40269 "parsing/parser.ml" : (Parsetree.pattern option)) in { @@ -40200,7 +40284,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 111 "" ( None ) -# 40204 "parsing/parser.ml" +# 40288 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40233,12 +40317,12 @@ module Tables = struct let x = # 188 "" ( x ) -# 40237 "parsing/parser.ml" +# 40321 "parsing/parser.ml" in ( # 114 "" ( Some x ) -# 40242 "parsing/parser.ml" +# 40326 "parsing/parser.ml" : (Parsetree.expression option)) in { @@ -40257,7 +40341,7 @@ module Tables = struct let _v : (Parsetree.type_constraint option) = # 111 "" ( None ) -# 40261 "parsing/parser.ml" +# 40345 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40282,7 +40366,7 @@ module Tables = struct let _v : (Parsetree.type_constraint option) = # 114 "" ( Some x ) -# 40286 "parsing/parser.ml" +# 40370 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40303,15 +40387,15 @@ module Tables = struct let _1 : # 842 "parsing/parser.mly" (string) -# 40307 "parsing/parser.ml" +# 40391 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4304 "parsing/parser.mly" +# 4313 "parsing/parser.mly" ( _1 ) -# 40315 "parsing/parser.ml" +# 40399 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40345,16 +40429,16 @@ module Tables = struct let _2 : # 825 "parsing/parser.mly" (string) -# 40349 "parsing/parser.ml" +# 40433 "parsing/parser.ml" = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (string) = -# 4305 "parsing/parser.mly" +# 4314 "parsing/parser.mly" ( _2 ) -# 40358 "parsing/parser.ml" +# 40442 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40409,9 +40493,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1481 "parsing/parser.mly" +# 1486 "parsing/parser.mly" ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) -# 40415 "parsing/parser.ml" +# 40499 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40466,9 +40550,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1483 "parsing/parser.mly" +# 1488 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 40472 "parsing/parser.ml" +# 40556 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40506,9 +40590,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_expr) = -# 1486 "parsing/parser.mly" +# 1491 "parsing/parser.mly" ( me (* TODO consider reloc *) ) -# 40512 "parsing/parser.ml" +# 40596 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40548,9 +40632,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1488 "parsing/parser.mly" +# 1493 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 40554 "parsing/parser.ml" +# 40638 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40605,18 +40689,18 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40611 "parsing/parser.ml" +# 40695 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1492 "parsing/parser.mly" +# 1497 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 40620 "parsing/parser.ml" +# 40704 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40678,30 +40762,30 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 40684 "parsing/parser.ml" +# 40768 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 40689 "parsing/parser.ml" +# 40773 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40697 "parsing/parser.ml" +# 40781 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1494 "parsing/parser.mly" +# 1499 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 40705 "parsing/parser.ml" +# 40789 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40789,18 +40873,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 40793 "parsing/parser.ml" +# 40877 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 40798 "parsing/parser.ml" +# 40882 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 40804 "parsing/parser.ml" +# 40888 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -40809,22 +40893,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40815 "parsing/parser.ml" +# 40899 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 40821 "parsing/parser.ml" +# 40905 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -40837,29 +40921,29 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 40841 "parsing/parser.ml" +# 40925 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 40847 "parsing/parser.ml" +# 40931 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40855 "parsing/parser.ml" +# 40939 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1494 "parsing/parser.mly" +# 1499 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 40863 "parsing/parser.ml" +# 40947 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -40921,30 +41005,30 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 40927 "parsing/parser.ml" +# 41011 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 40932 "parsing/parser.ml" +# 41016 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 40940 "parsing/parser.ml" +# 41024 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1496 "parsing/parser.mly" +# 1501 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 40948 "parsing/parser.ml" +# 41032 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -41032,18 +41116,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 41036 "parsing/parser.ml" +# 41120 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 41041 "parsing/parser.ml" +# 41125 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 41047 "parsing/parser.ml" +# 41131 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -41052,22 +41136,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 41058 "parsing/parser.ml" +# 41142 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 41064 "parsing/parser.ml" +# 41148 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -41080,29 +41164,29 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 41084 "parsing/parser.ml" +# 41168 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 41090 "parsing/parser.ml" +# 41174 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 41098 "parsing/parser.ml" +# 41182 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1496 "parsing/parser.mly" +# 1501 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 41106 "parsing/parser.ml" +# 41190 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -41157,30 +41241,30 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 41163 "parsing/parser.ml" +# 41247 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 41168 "parsing/parser.ml" +# 41252 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 41176 "parsing/parser.ml" +# 41260 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1498 "parsing/parser.mly" +# 1503 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 41184 "parsing/parser.ml" +# 41268 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -41261,18 +41345,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 41265 "parsing/parser.ml" +# 41349 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 41270 "parsing/parser.ml" +# 41354 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 41276 "parsing/parser.ml" +# 41360 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -41281,22 +41365,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 41287 "parsing/parser.ml" +# 41371 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 41293 "parsing/parser.ml" +# 41377 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -41309,29 +41393,29 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 41313 "parsing/parser.ml" +# 41397 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 41319 "parsing/parser.ml" +# 41403 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 41327 "parsing/parser.ml" +# 41411 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1498 "parsing/parser.mly" +# 1503 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 41335 "parsing/parser.ml" +# 41419 "parsing/parser.ml" : (Parsetree.module_expr)) in { @@ -41362,9 +41446,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1399 "parsing/parser.mly" +# 1401 "parsing/parser.mly" ( _1 ) -# 41368 "parsing/parser.ml" +# 41452 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41394,9 +41478,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1384 "parsing/parser.mly" +# 1386 "parsing/parser.mly" ( _1 ) -# 41400 "parsing/parser.ml" +# 41484 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41426,9 +41510,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 1359 "parsing/parser.mly" +# 1361 "parsing/parser.mly" ( _1 ) -# 41432 "parsing/parser.ml" +# 41516 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41458,9 +41542,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 1364 "parsing/parser.mly" +# 1366 "parsing/parser.mly" ( _1 ) -# 41464 "parsing/parser.ml" +# 41548 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41490,9 +41574,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1389 "parsing/parser.mly" +# 1391 "parsing/parser.mly" ( _1 ) -# 41496 "parsing/parser.ml" +# 41580 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41522,9 +41606,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1394 "parsing/parser.mly" +# 1396 "parsing/parser.mly" ( _1 ) -# 41528 "parsing/parser.ml" +# 41612 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41554,9 +41638,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_expr) = -# 1354 "parsing/parser.mly" +# 1356 "parsing/parser.mly" ( _1 ) -# 41560 "parsing/parser.ml" +# 41644 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41586,9 +41670,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1349 "parsing/parser.mly" +# 1351 "parsing/parser.mly" ( _1 ) -# 41592 "parsing/parser.ml" +# 41676 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41618,9 +41702,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1374 "parsing/parser.mly" +# 1376 "parsing/parser.mly" ( _1 ) -# 41624 "parsing/parser.ml" +# 41708 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41650,9 +41734,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = -# 1369 "parsing/parser.mly" +# 1371 "parsing/parser.mly" ( _1 ) -# 41656 "parsing/parser.ml" +# 41740 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41682,9 +41766,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1379 "parsing/parser.mly" +# 1381 "parsing/parser.mly" ( _1 ) -# 41688 "parsing/parser.ml" +# 41772 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41727,16 +41811,16 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3038 "parsing/parser.mly" +# 3045 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple ([None, _1; None, _3], Closed))) ) -# 41734 "parsing/parser.ml" +# 41818 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 41740 "parsing/parser.ml" +# 41824 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -41768,14 +41852,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v = let _1 = -# 3041 "parsing/parser.mly" +# 3048 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 41774 "parsing/parser.ml" +# 41858 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 41779 "parsing/parser.ml" +# 41863 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -41800,14 +41884,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 3043 "parsing/parser.mly" +# 3050 "parsing/parser.mly" ( _1 ) -# 41806 "parsing/parser.ml" +# 41890 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 41811 "parsing/parser.ml" +# 41895 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -41854,15 +41938,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41860 "parsing/parser.ml" +# 41944 "parsing/parser.ml" in -# 3046 "parsing/parser.mly" +# 3053 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 41866 "parsing/parser.ml" +# 41950 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -41870,21 +41954,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 41876 "parsing/parser.ml" +# 41960 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 41882 "parsing/parser.ml" +# 41966 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 41888 "parsing/parser.ml" +# 41972 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -41927,9 +42011,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3048 "parsing/parser.mly" +# 3055 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 41933 "parsing/parser.ml" +# 42017 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -41937,21 +42021,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 41943 "parsing/parser.ml" +# 42027 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 41949 "parsing/parser.ml" +# 42033 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 41955 "parsing/parser.ml" +# 42039 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -41978,29 +42062,29 @@ module Tables = struct let _1 = let _1 = let _1 = -# 3050 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( _1 ) -# 41984 "parsing/parser.ml" +# 42068 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 41992 "parsing/parser.ml" +# 42076 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 41998 "parsing/parser.ml" +# 42082 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 42004 "parsing/parser.ml" +# 42088 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42043,9 +42127,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3052 "parsing/parser.mly" +# 3059 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 42049 "parsing/parser.ml" +# 42133 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42053,21 +42137,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42059 "parsing/parser.ml" +# 42143 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42065 "parsing/parser.ml" +# 42149 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 42071 "parsing/parser.ml" +# 42155 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42108,30 +42192,30 @@ module Tables = struct let _1 = let _1 = let _1 = -# 3054 "parsing/parser.mly" +# 3061 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 42114 "parsing/parser.ml" +# 42198 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42123 "parsing/parser.ml" +# 42207 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42129 "parsing/parser.ml" +# 42213 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 42135 "parsing/parser.ml" +# 42219 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42174,9 +42258,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3056 "parsing/parser.mly" +# 3063 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 42180 "parsing/parser.ml" +# 42264 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42184,21 +42268,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42190 "parsing/parser.ml" +# 42274 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42196 "parsing/parser.ml" +# 42280 "parsing/parser.ml" in ( -# 3024 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( _1 ) -# 42202 "parsing/parser.ml" +# 42286 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42248,24 +42332,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 42254 "parsing/parser.ml" +# 42338 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 42260 "parsing/parser.ml" +# 42344 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3026 "parsing/parser.mly" +# 3033 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) -# 42269 "parsing/parser.ml" +# 42353 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42314,9 +42398,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3028 "parsing/parser.mly" +# 3035 "parsing/parser.mly" ( mkpat ~loc:_sloc (Ppat_effect(_2,_4)) ) -# 42320 "parsing/parser.ml" +# 42404 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42340,9 +42424,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3062 "parsing/parser.mly" +# 3069 "parsing/parser.mly" ( _1 ) -# 42346 "parsing/parser.ml" +# 42430 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42379,15 +42463,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42385 "parsing/parser.ml" +# 42469 "parsing/parser.ml" in -# 3065 "parsing/parser.mly" +# 3072 "parsing/parser.mly" ( Ppat_construct(_1, Some ([], _2)) ) -# 42391 "parsing/parser.ml" +# 42475 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -42395,15 +42479,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42401 "parsing/parser.ml" +# 42485 "parsing/parser.ml" in ( -# 3071 "parsing/parser.mly" +# 3078 "parsing/parser.mly" ( _1 ) -# 42407 "parsing/parser.ml" +# 42491 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42465,24 +42549,24 @@ module Tables = struct let _1 = let _1 = let newtypes = -# 2716 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( xs ) -# 42471 "parsing/parser.ml" +# 42555 "parsing/parser.ml" in let constr = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42480 "parsing/parser.ml" +# 42564 "parsing/parser.ml" in -# 3068 "parsing/parser.mly" +# 3075 "parsing/parser.mly" ( Ppat_construct(constr, Some (newtypes, pat)) ) -# 42486 "parsing/parser.ml" +# 42570 "parsing/parser.ml" in let _endpos__1_ = _endpos_pat_ in @@ -42490,15 +42574,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42496 "parsing/parser.ml" +# 42580 "parsing/parser.ml" in ( -# 3071 "parsing/parser.mly" +# 3078 "parsing/parser.mly" ( _1 ) -# 42502 "parsing/parser.ml" +# 42586 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42531,24 +42615,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3070 "parsing/parser.mly" +# 3077 "parsing/parser.mly" ( Ppat_variant(_1, Some _2) ) -# 42537 "parsing/parser.ml" +# 42621 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42546 "parsing/parser.ml" +# 42630 "parsing/parser.ml" in ( -# 3071 "parsing/parser.mly" +# 3078 "parsing/parser.mly" ( _1 ) -# 42552 "parsing/parser.ml" +# 42636 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42598,24 +42682,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 42604 "parsing/parser.ml" +# 42688 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 42610 "parsing/parser.ml" +# 42694 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3073 "parsing/parser.mly" +# 3080 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) -# 42619 "parsing/parser.ml" +# 42703 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42659,16 +42743,16 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3038 "parsing/parser.mly" +# 3045 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple ([None, _1; None, _3], Closed))) ) -# 42666 "parsing/parser.ml" +# 42750 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42672 "parsing/parser.ml" +# 42756 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42700,14 +42784,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v = let _1 = -# 3041 "parsing/parser.mly" +# 3048 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 42706 "parsing/parser.ml" +# 42790 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42711 "parsing/parser.ml" +# 42795 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42732,14 +42816,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 3043 "parsing/parser.mly" +# 3050 "parsing/parser.mly" ( _1 ) -# 42738 "parsing/parser.ml" +# 42822 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42743 "parsing/parser.ml" +# 42827 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42786,15 +42870,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42792 "parsing/parser.ml" +# 42876 "parsing/parser.ml" in -# 3046 "parsing/parser.mly" +# 3053 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 42798 "parsing/parser.ml" +# 42882 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -42802,21 +42886,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42808 "parsing/parser.ml" +# 42892 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42814 "parsing/parser.ml" +# 42898 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42820 "parsing/parser.ml" +# 42904 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42859,9 +42943,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3048 "parsing/parser.mly" +# 3055 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 42865 "parsing/parser.ml" +# 42949 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42869,21 +42953,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42875 "parsing/parser.ml" +# 42959 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42881 "parsing/parser.ml" +# 42965 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42887 "parsing/parser.ml" +# 42971 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42910,29 +42994,29 @@ module Tables = struct let _1 = let _1 = let _1 = -# 3050 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( _1 ) -# 42916 "parsing/parser.ml" +# 43000 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42924 "parsing/parser.ml" +# 43008 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42930 "parsing/parser.ml" +# 43014 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 42936 "parsing/parser.ml" +# 43020 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -42975,9 +43059,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3052 "parsing/parser.mly" +# 3059 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 42981 "parsing/parser.ml" +# 43065 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42985,21 +43069,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 42991 "parsing/parser.ml" +# 43075 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 42997 "parsing/parser.ml" +# 43081 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 43003 "parsing/parser.ml" +# 43087 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -43040,30 +43124,30 @@ module Tables = struct let _1 = let _1 = let _1 = -# 3054 "parsing/parser.mly" +# 3061 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 43046 "parsing/parser.ml" +# 43130 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 43055 "parsing/parser.ml" +# 43139 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 43061 "parsing/parser.ml" +# 43145 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 43067 "parsing/parser.ml" +# 43151 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -43106,9 +43190,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3056 "parsing/parser.mly" +# 3063 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 43112 "parsing/parser.ml" +# 43196 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43116,21 +43200,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 43122 "parsing/parser.ml" +# 43206 "parsing/parser.ml" in -# 3057 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( _1 ) -# 43128 "parsing/parser.ml" +# 43212 "parsing/parser.ml" in ( -# 3033 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _1 ) -# 43134 "parsing/parser.ml" +# 43218 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -43152,7 +43236,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 43156 "parsing/parser.ml" +# 43240 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -43165,30 +43249,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43171 "parsing/parser.ml" +# 43255 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2406 "parsing/parser.mly" ( Ppat_var _1 ) -# 43177 "parsing/parser.ml" +# 43261 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 43186 "parsing/parser.ml" +# 43270 "parsing/parser.ml" in ( -# 2403 "parsing/parser.mly" +# 2408 "parsing/parser.mly" ( _1 ) -# 43192 "parsing/parser.ml" +# 43276 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -43214,23 +43298,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2402 "parsing/parser.mly" +# 2407 "parsing/parser.mly" ( Ppat_any ) -# 43220 "parsing/parser.ml" +# 43304 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 43228 "parsing/parser.ml" +# 43312 "parsing/parser.ml" in ( -# 2403 "parsing/parser.mly" +# 2408 "parsing/parser.mly" ( _1 ) -# 43234 "parsing/parser.ml" +# 43318 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -43254,9 +43338,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4417 "parsing/parser.mly" +# 4426 "parsing/parser.mly" ( PStr _1 ) -# 43260 "parsing/parser.ml" +# 43344 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43286,9 +43370,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4418 "parsing/parser.mly" +# 4427 "parsing/parser.mly" ( PSig _2 ) -# 43292 "parsing/parser.ml" +# 43376 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43318,9 +43402,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4419 "parsing/parser.mly" +# 4428 "parsing/parser.mly" ( PTyp _2 ) -# 43324 "parsing/parser.ml" +# 43408 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43350,9 +43434,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4420 "parsing/parser.mly" +# 4429 "parsing/parser.mly" ( PPat (_2, None) ) -# 43356 "parsing/parser.ml" +# 43440 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43396,9 +43480,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.payload) = -# 4421 "parsing/parser.mly" +# 4430 "parsing/parser.mly" ( PPat (_2, Some _4) ) -# 43402 "parsing/parser.ml" +# 43486 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43421,9 +43505,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3677 "parsing/parser.mly" +# 3686 "parsing/parser.mly" ( _1 ) -# 43427 "parsing/parser.ml" +# 43511 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43467,24 +43551,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 43471 "parsing/parser.ml" +# 43555 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 43476 "parsing/parser.ml" +# 43560 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 43482 "parsing/parser.ml" +# 43566 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 43488 "parsing/parser.ml" +# 43572 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -43492,15 +43576,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 43498 "parsing/parser.ml" +# 43582 "parsing/parser.ml" in ( -# 3679 "parsing/parser.mly" +# 3688 "parsing/parser.mly" ( _1 ) -# 43504 "parsing/parser.ml" +# 43588 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -43525,14 +43609,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 43531 "parsing/parser.ml" +# 43615 "parsing/parser.ml" in ( -# 3677 "parsing/parser.mly" +# 3686 "parsing/parser.mly" ( _1 ) -# 43536 "parsing/parser.ml" +# 43620 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -43573,33 +43657,33 @@ module Tables = struct let _1 = let _1 = let _3 = -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 43579 "parsing/parser.ml" +# 43663 "parsing/parser.ml" in let _1 = let _1 = let xs = # 264 "" ( List.rev xs ) -# 43586 "parsing/parser.ml" +# 43670 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 43591 "parsing/parser.ml" +# 43675 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 43597 "parsing/parser.ml" +# 43681 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 43603 "parsing/parser.ml" +# 43687 "parsing/parser.ml" in let _startpos__1_ = _startpos_xs_ in @@ -43607,15 +43691,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 43613 "parsing/parser.ml" +# 43697 "parsing/parser.ml" in ( -# 3679 "parsing/parser.mly" +# 3688 "parsing/parser.mly" ( _1 ) -# 43619 "parsing/parser.ml" +# 43703 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -43664,9 +43748,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4378 "parsing/parser.mly" +# 4387 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 43670 "parsing/parser.ml" +# 43754 "parsing/parser.ml" : (Parsetree.attribute)) in { @@ -43749,9 +43833,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 43755 "parsing/parser.ml" +# 43839 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -43761,30 +43845,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43767 "parsing/parser.ml" +# 43851 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 43775 "parsing/parser.ml" +# 43859 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3276 "parsing/parser.mly" +# 3283 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Prim.mk_decl id ty ~prim ~attrs ~loc ~docs, ext ) -# 43788 "parsing/parser.ml" +# 43872 "parsing/parser.ml" : (Parsetree.primitive_description * string Asttypes.loc option)) in { @@ -43853,9 +43937,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 43859 "parsing/parser.ml" +# 43943 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -43865,9 +43949,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43871 "parsing/parser.ml" +# 43955 "parsing/parser.ml" in let id = @@ -43876,30 +43960,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43882 "parsing/parser.ml" +# 43966 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 43890 "parsing/parser.ml" +# 43974 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3288 "parsing/parser.mly" +# 3295 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Prim.mk_alias id None lid ~attrs ~loc ~docs, ext ) -# 43903 "parsing/parser.ml" +# 43987 "parsing/parser.ml" : (Parsetree.primitive_description * string Asttypes.loc option)) in { @@ -43982,9 +44066,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 43988 "parsing/parser.ml" +# 44072 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -43994,9 +44078,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44000 "parsing/parser.ml" +# 44084 "parsing/parser.ml" in let id = @@ -44005,30 +44089,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44011 "parsing/parser.ml" +# 44095 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 44019 "parsing/parser.ml" +# 44103 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3302 "parsing/parser.mly" +# 3309 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Prim.mk_alias id (Some ty) lid ~attrs ~loc ~docs, ext ) -# 44032 "parsing/parser.ml" +# 44116 "parsing/parser.ml" : (Parsetree.primitive_description * string Asttypes.loc option)) in { @@ -44046,14 +44130,14 @@ module Tables = struct let _endpos = _startpos in let _v = let _1 = -# 4245 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( Public ) -# 44052 "parsing/parser.ml" +# 44136 "parsing/parser.ml" in ( -# 4242 "parsing/parser.mly" +# 4251 "parsing/parser.mly" ( _1 ) -# 44057 "parsing/parser.ml" +# 44141 "parsing/parser.ml" : (Asttypes.private_flag)) in { @@ -44078,14 +44162,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 4246 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( Private ) -# 44084 "parsing/parser.ml" +# 44168 "parsing/parser.ml" in ( -# 4242 "parsing/parser.mly" +# 4251 "parsing/parser.mly" ( _1 ) -# 44089 "parsing/parser.ml" +# 44173 "parsing/parser.ml" : (Asttypes.private_flag)) in { @@ -44102,9 +44186,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4268 "parsing/parser.mly" +# 4277 "parsing/parser.mly" ( Public, Concrete ) -# 44108 "parsing/parser.ml" +# 44192 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44127,9 +44211,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4269 "parsing/parser.mly" +# 4278 "parsing/parser.mly" ( Private, Concrete ) -# 44133 "parsing/parser.ml" +# 44217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44152,9 +44236,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4270 "parsing/parser.mly" +# 4279 "parsing/parser.mly" ( Public, Virtual ) -# 44158 "parsing/parser.ml" +# 44242 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44184,9 +44268,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4271 "parsing/parser.mly" +# 4280 "parsing/parser.mly" ( Private, Virtual ) -# 44190 "parsing/parser.ml" +# 44274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44216,9 +44300,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4272 "parsing/parser.mly" +# 4281 "parsing/parser.mly" ( Private, Virtual ) -# 44222 "parsing/parser.ml" +# 44306 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44234,9 +44318,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.rec_flag) = -# 4223 "parsing/parser.mly" +# 4232 "parsing/parser.mly" ( Nonrecursive ) -# 44240 "parsing/parser.ml" +# 44324 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44259,9 +44343,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.rec_flag) = -# 4224 "parsing/parser.mly" +# 4233 "parsing/parser.mly" ( Recursive ) -# 44265 "parsing/parser.ml" +# 44349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44287,12 +44371,12 @@ module Tables = struct let eo = # 123 "" ( None ) -# 44291 "parsing/parser.ml" +# 44375 "parsing/parser.ml" in ( -# 2956 "parsing/parser.mly" +# 2963 "parsing/parser.mly" ( eo, fields ) -# 44296 "parsing/parser.ml" +# 44380 "parsing/parser.ml" : (Parsetree.expression option * (Longident.t Asttypes.loc * Parsetree.expression) list)) in @@ -44335,18 +44419,18 @@ module Tables = struct let x = # 196 "" ( x ) -# 44339 "parsing/parser.ml" +# 44423 "parsing/parser.ml" in # 126 "" ( Some x ) -# 44344 "parsing/parser.ml" +# 44428 "parsing/parser.ml" in ( -# 2956 "parsing/parser.mly" +# 2963 "parsing/parser.mly" ( eo, fields ) -# 44350 "parsing/parser.ml" +# 44434 "parsing/parser.ml" : (Parsetree.expression option * (Longident.t Asttypes.loc * Parsetree.expression) list)) in @@ -44382,12 +44466,12 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 44386 "parsing/parser.ml" +# 44470 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 44391 "parsing/parser.ml" +# 44475 "parsing/parser.ml" in let _endpos__2_ = _endpos_xs_ in @@ -44395,9 +44479,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2949 "parsing/parser.mly" +# 2956 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_apply (_1, _2)) ) -# 44401 "parsing/parser.ml" +# 44485 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -44421,9 +44505,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2951 "parsing/parser.mly" +# 2958 "parsing/parser.mly" ( _1 ) -# 44427 "parsing/parser.ml" +# 44511 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44449,17 +44533,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3496 "parsing/parser.mly" +# 3503 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44458 "parsing/parser.ml" +# 44542 "parsing/parser.ml" in ( -# 1241 "parsing/parser.mly" +# 1243 "parsing/parser.mly" ( [x] ) -# 44463 "parsing/parser.ml" +# 44547 "parsing/parser.ml" : (Parsetree.constructor_declaration list)) in { @@ -44486,17 +44570,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3496 "parsing/parser.mly" +# 3503 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44495 "parsing/parser.ml" +# 44579 "parsing/parser.ml" in ( -# 1244 "parsing/parser.mly" +# 1246 "parsing/parser.mly" ( [x] ) -# 44500 "parsing/parser.ml" +# 44584 "parsing/parser.ml" : (Parsetree.constructor_declaration list)) in { @@ -44530,17 +44614,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3496 "parsing/parser.mly" +# 3503 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44539 "parsing/parser.ml" +# 44623 "parsing/parser.ml" in ( -# 1248 "parsing/parser.mly" +# 1250 "parsing/parser.mly" ( x :: xs ) -# 44544 "parsing/parser.ml" +# 44628 "parsing/parser.ml" : (Parsetree.constructor_declaration list)) in { @@ -44568,23 +44652,23 @@ module Tables = struct let _v = let x = let _1 = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44577 "parsing/parser.ml" +# 44661 "parsing/parser.ml" in -# 3601 "parsing/parser.mly" +# 3608 "parsing/parser.mly" ( _1 ) -# 44582 "parsing/parser.ml" +# 44666 "parsing/parser.ml" in ( -# 1241 "parsing/parser.mly" +# 1243 "parsing/parser.mly" ( [x] ) -# 44588 "parsing/parser.ml" +# 44672 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44609,14 +44693,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let x = -# 3603 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( _1 ) -# 44615 "parsing/parser.ml" +# 44699 "parsing/parser.ml" in ( -# 1241 "parsing/parser.mly" +# 1243 "parsing/parser.mly" ( [x] ) -# 44620 "parsing/parser.ml" +# 44704 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44644,23 +44728,23 @@ module Tables = struct let _v = let x = let _1 = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44653 "parsing/parser.ml" +# 44737 "parsing/parser.ml" in -# 3601 "parsing/parser.mly" +# 3608 "parsing/parser.mly" ( _1 ) -# 44658 "parsing/parser.ml" +# 44742 "parsing/parser.ml" in ( -# 1244 "parsing/parser.mly" +# 1246 "parsing/parser.mly" ( [x] ) -# 44664 "parsing/parser.ml" +# 44748 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44685,14 +44769,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let x = -# 3603 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( _1 ) -# 44691 "parsing/parser.ml" +# 44775 "parsing/parser.ml" in ( -# 1244 "parsing/parser.mly" +# 1246 "parsing/parser.mly" ( [x] ) -# 44696 "parsing/parser.ml" +# 44780 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44727,23 +44811,23 @@ module Tables = struct let _v = let x = let _1 = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44736 "parsing/parser.ml" +# 44820 "parsing/parser.ml" in -# 3601 "parsing/parser.mly" +# 3608 "parsing/parser.mly" ( _1 ) -# 44741 "parsing/parser.ml" +# 44825 "parsing/parser.ml" in ( -# 1248 "parsing/parser.mly" +# 1250 "parsing/parser.mly" ( x :: xs ) -# 44747 "parsing/parser.ml" +# 44831 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44775,14 +44859,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let x = -# 3603 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( _1 ) -# 44781 "parsing/parser.ml" +# 44865 "parsing/parser.ml" in ( -# 1248 "parsing/parser.mly" +# 1250 "parsing/parser.mly" ( x :: xs ) -# 44786 "parsing/parser.ml" +# 44870 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44809,17 +44893,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44818 "parsing/parser.ml" +# 44902 "parsing/parser.ml" in ( -# 1241 "parsing/parser.mly" +# 1243 "parsing/parser.mly" ( [x] ) -# 44823 "parsing/parser.ml" +# 44907 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44846,17 +44930,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44855 "parsing/parser.ml" +# 44939 "parsing/parser.ml" in ( -# 1244 "parsing/parser.mly" +# 1246 "parsing/parser.mly" ( [x] ) -# 44860 "parsing/parser.ml" +# 44944 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44890,17 +44974,17 @@ module Tables = struct let _endpos = _endpos_d_ in let _v = let x = -# 3607 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 44899 "parsing/parser.ml" +# 44983 "parsing/parser.ml" in ( -# 1248 "parsing/parser.mly" +# 1250 "parsing/parser.mly" ( x :: xs ) -# 44904 "parsing/parser.ml" +# 44988 "parsing/parser.ml" : (Parsetree.extension_constructor list)) in { @@ -44941,26 +45025,26 @@ module Tables = struct let x = let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 44947 "parsing/parser.ml" +# 45031 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 44952 "parsing/parser.ml" +# 45036 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 44958 "parsing/parser.ml" +# 45042 "parsing/parser.ml" in ( -# 2919 "parsing/parser.mly" +# 2926 "parsing/parser.mly" ( x :: xs ) -# 44964 "parsing/parser.ml" +# 45048 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45028,18 +45112,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 45032 "parsing/parser.ml" +# 45116 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 45037 "parsing/parser.ml" +# 45121 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 45043 "parsing/parser.ml" +# 45127 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -45048,22 +45132,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 45054 "parsing/parser.ml" +# 45138 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 45060 "parsing/parser.ml" +# 45144 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -45076,25 +45160,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 45080 "parsing/parser.ml" +# 45164 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45086 "parsing/parser.ml" +# 45170 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 45092 "parsing/parser.ml" +# 45176 "parsing/parser.ml" in ( -# 2919 "parsing/parser.mly" +# 2926 "parsing/parser.mly" ( x :: xs ) -# 45098 "parsing/parser.ml" +# 45182 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45135,7 +45219,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 45139 "parsing/parser.ml" +# 45223 "parsing/parser.ml" = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in @@ -45146,15 +45230,15 @@ module Tables = struct let x = let _2 = _2_inlined1 in -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 45152 "parsing/parser.ml" +# 45236 "parsing/parser.ml" in ( -# 2919 "parsing/parser.mly" +# 2926 "parsing/parser.mly" ( x :: xs ) -# 45158 "parsing/parser.ml" +# 45242 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45194,7 +45278,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 45198 "parsing/parser.ml" +# 45282 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in @@ -45206,16 +45290,16 @@ module Tables = struct let x = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 45213 "parsing/parser.ml" +# 45297 "parsing/parser.ml" in ( -# 2919 "parsing/parser.mly" +# 2926 "parsing/parser.mly" ( x :: xs ) -# 45219 "parsing/parser.ml" +# 45303 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45275,7 +45359,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 45279 "parsing/parser.ml" +# 45363 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -45290,17 +45374,17 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 45298 "parsing/parser.ml" +# 45382 "parsing/parser.ml" in ( -# 2919 "parsing/parser.mly" +# 2926 "parsing/parser.mly" ( x :: xs ) -# 45304 "parsing/parser.ml" +# 45388 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45342,38 +45426,38 @@ module Tables = struct let _1 = _1_inlined1 in let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45348 "parsing/parser.ml" +# 45432 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45353 "parsing/parser.ml" +# 45437 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 45359 "parsing/parser.ml" +# 45443 "parsing/parser.ml" in let x1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45366 "parsing/parser.ml" +# 45450 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45371 "parsing/parser.ml" +# 45455 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45377 "parsing/parser.ml" +# 45461 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45441,18 +45525,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 45445 "parsing/parser.ml" +# 45529 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 45450 "parsing/parser.ml" +# 45534 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 45456 "parsing/parser.ml" +# 45540 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -45461,22 +45545,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 45467 "parsing/parser.ml" +# 45551 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 45473 "parsing/parser.ml" +# 45557 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -45489,37 +45573,37 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 45493 "parsing/parser.ml" +# 45577 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45499 "parsing/parser.ml" +# 45583 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 45505 "parsing/parser.ml" +# 45589 "parsing/parser.ml" in let x1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45512 "parsing/parser.ml" +# 45596 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45517 "parsing/parser.ml" +# 45601 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45523 "parsing/parser.ml" +# 45607 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45560,7 +45644,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 45564 "parsing/parser.ml" +# 45648 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -45571,27 +45655,27 @@ module Tables = struct let x2 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 45577 "parsing/parser.ml" +# 45661 "parsing/parser.ml" in let x1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45584 "parsing/parser.ml" +# 45668 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45589 "parsing/parser.ml" +# 45673 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45595 "parsing/parser.ml" +# 45679 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45631,7 +45715,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 45635 "parsing/parser.ml" +# 45719 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -45643,28 +45727,28 @@ module Tables = struct let x2 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 45650 "parsing/parser.ml" +# 45734 "parsing/parser.ml" in let x1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45657 "parsing/parser.ml" +# 45741 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45662 "parsing/parser.ml" +# 45746 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45668 "parsing/parser.ml" +# 45752 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45724,7 +45808,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 45728 "parsing/parser.ml" +# 45812 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -45739,29 +45823,29 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 45747 "parsing/parser.ml" +# 45831 "parsing/parser.ml" in let x1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45754 "parsing/parser.ml" +# 45838 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45759 "parsing/parser.ml" +# 45843 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45765 "parsing/parser.ml" +# 45849 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45824,20 +45908,20 @@ module Tables = struct let _1 = _1_inlined3 in let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 45830 "parsing/parser.ml" +# 45914 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45835 "parsing/parser.ml" +# 45919 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 45841 "parsing/parser.ml" +# 45925 "parsing/parser.ml" in let x1 = @@ -45847,18 +45931,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 45851 "parsing/parser.ml" +# 45935 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 45856 "parsing/parser.ml" +# 45940 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 45862 "parsing/parser.ml" +# 45946 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -45867,22 +45951,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 45873 "parsing/parser.ml" +# 45957 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 45879 "parsing/parser.ml" +# 45963 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -45895,19 +45979,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 45899 "parsing/parser.ml" +# 45983 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 45905 "parsing/parser.ml" +# 45989 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 45911 "parsing/parser.ml" +# 45995 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -45996,18 +46080,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46000 "parsing/parser.ml" +# 46084 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46005 "parsing/parser.ml" +# 46089 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46011 "parsing/parser.ml" +# 46095 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46016,22 +46100,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46022 "parsing/parser.ml" +# 46106 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46028 "parsing/parser.ml" +# 46112 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46044,19 +46128,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46048 "parsing/parser.ml" +# 46132 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46054 "parsing/parser.ml" +# 46138 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 46060 "parsing/parser.ml" +# 46144 "parsing/parser.ml" in let x1 = @@ -46066,18 +46150,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46070 "parsing/parser.ml" +# 46154 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46075 "parsing/parser.ml" +# 46159 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46081 "parsing/parser.ml" +# 46165 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46086,22 +46170,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46092 "parsing/parser.ml" +# 46176 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46098 "parsing/parser.ml" +# 46182 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46114,19 +46198,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46118 "parsing/parser.ml" +# 46202 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46124 "parsing/parser.ml" +# 46208 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 46130 "parsing/parser.ml" +# 46214 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46185,7 +46269,7 @@ module Tables = struct let _1_inlined3 : # 812 "parsing/parser.mly" (string) -# 46189 "parsing/parser.ml" +# 46273 "parsing/parser.ml" = Obj.magic _1_inlined3 in let _2 : unit = Obj.magic _2 in let xs : (Parsetree.case list) = Obj.magic xs in @@ -46199,9 +46283,9 @@ module Tables = struct let x2 = let (_1, _2) = (_1_inlined3, _2_inlined1) in -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 46205 "parsing/parser.ml" +# 46289 "parsing/parser.ml" in let x1 = @@ -46211,18 +46295,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46215 "parsing/parser.ml" +# 46299 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46220 "parsing/parser.ml" +# 46304 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46226 "parsing/parser.ml" +# 46310 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46231,22 +46315,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46237 "parsing/parser.ml" +# 46321 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46243 "parsing/parser.ml" +# 46327 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46259,19 +46343,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46263 "parsing/parser.ml" +# 46347 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46269 "parsing/parser.ml" +# 46353 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 46275 "parsing/parser.ml" +# 46359 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46329,7 +46413,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 46333 "parsing/parser.ml" +# 46417 "parsing/parser.ml" = Obj.magic label in let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _2 : unit = Obj.magic _2 in @@ -46344,10 +46428,10 @@ module Tables = struct let x2 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 46351 "parsing/parser.ml" +# 46435 "parsing/parser.ml" in let x1 = @@ -46357,18 +46441,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46361 "parsing/parser.ml" +# 46445 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46366 "parsing/parser.ml" +# 46450 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46372 "parsing/parser.ml" +# 46456 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46377,22 +46461,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46383 "parsing/parser.ml" +# 46467 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46389 "parsing/parser.ml" +# 46473 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46405,19 +46489,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46409 "parsing/parser.ml" +# 46493 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46415 "parsing/parser.ml" +# 46499 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 46421 "parsing/parser.ml" +# 46505 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46495,7 +46579,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 46499 "parsing/parser.ml" +# 46583 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in @@ -46513,11 +46597,11 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 46521 "parsing/parser.ml" +# 46605 "parsing/parser.ml" in let x1 = @@ -46527,18 +46611,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46531 "parsing/parser.ml" +# 46615 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46536 "parsing/parser.ml" +# 46620 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46542 "parsing/parser.ml" +# 46626 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46547,22 +46631,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46553 "parsing/parser.ml" +# 46637 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46559 "parsing/parser.ml" +# 46643 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46575,19 +46659,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46579 "parsing/parser.ml" +# 46663 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46585 "parsing/parser.ml" +# 46669 "parsing/parser.ml" in ( -# 2924 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( [ x2; None, x1 ] ) -# 46591 "parsing/parser.ml" +# 46675 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46630,7 +46714,7 @@ module Tables = struct let l1 : # 812 "parsing/parser.mly" (string) -# 46634 "parsing/parser.ml" +# 46718 "parsing/parser.ml" = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_l1_ in @@ -46639,26 +46723,26 @@ module Tables = struct let x2 = let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 46645 "parsing/parser.ml" +# 46729 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46650 "parsing/parser.ml" +# 46734 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 46656 "parsing/parser.ml" +# 46740 "parsing/parser.ml" in ( -# 2928 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( [ x2; Some l1, x1 ] ) -# 46662 "parsing/parser.ml" +# 46746 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46722,7 +46806,7 @@ module Tables = struct let l1 : # 812 "parsing/parser.mly" (string) -# 46726 "parsing/parser.ml" +# 46810 "parsing/parser.ml" = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_l1_ in @@ -46736,18 +46820,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 46740 "parsing/parser.ml" +# 46824 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 46745 "parsing/parser.ml" +# 46829 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 46751 "parsing/parser.ml" +# 46835 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -46756,22 +46840,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 46762 "parsing/parser.ml" +# 46846 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 46768 "parsing/parser.ml" +# 46852 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -46784,25 +46868,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 46788 "parsing/parser.ml" +# 46872 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 46794 "parsing/parser.ml" +# 46878 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 46800 "parsing/parser.ml" +# 46884 "parsing/parser.ml" in ( -# 2928 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( [ x2; Some l1, x1 ] ) -# 46806 "parsing/parser.ml" +# 46890 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46849,28 +46933,28 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 46853 "parsing/parser.ml" +# 46937 "parsing/parser.ml" = Obj.magic _1 in let _3 : unit = Obj.magic _3 in let x1 : (Parsetree.expression) = Obj.magic x1 in let l1 : # 812 "parsing/parser.mly" (string) -# 46860 "parsing/parser.ml" +# 46944 "parsing/parser.ml" = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_l1_ in let _endpos = _endpos__2_ in let _v = let x2 = -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 46869 "parsing/parser.ml" +# 46953 "parsing/parser.ml" in ( -# 2928 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( [ x2; Some l1, x1 ] ) -# 46874 "parsing/parser.ml" +# 46958 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -46916,7 +47000,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 46920 "parsing/parser.ml" +# 47004 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _3 : unit = Obj.magic _3 in @@ -46924,7 +47008,7 @@ module Tables = struct let l1 : # 812 "parsing/parser.mly" (string) -# 46928 "parsing/parser.ml" +# 47012 "parsing/parser.ml" = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_l1_ in @@ -46933,16 +47017,16 @@ module Tables = struct let x2 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 46940 "parsing/parser.ml" +# 47024 "parsing/parser.ml" in ( -# 2928 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( [ x2; Some l1, x1 ] ) -# 46946 "parsing/parser.ml" +# 47030 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47008,7 +47092,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 47012 "parsing/parser.ml" +# 47096 "parsing/parser.ml" = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -47017,7 +47101,7 @@ module Tables = struct let l1 : # 812 "parsing/parser.mly" (string) -# 47021 "parsing/parser.ml" +# 47105 "parsing/parser.ml" = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_l1_ in @@ -47027,17 +47111,17 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 47035 "parsing/parser.ml" +# 47119 "parsing/parser.ml" in ( -# 2928 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( [ x2; Some l1, x1 ] ) -# 47041 "parsing/parser.ml" +# 47125 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47079,7 +47163,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47083 "parsing/parser.ml" +# 47167 "parsing/parser.ml" = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47090,28 +47174,28 @@ module Tables = struct let _1 = _1_inlined1 in let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 47096 "parsing/parser.ml" +# 47180 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 47101 "parsing/parser.ml" +# 47185 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 47107 "parsing/parser.ml" +# 47191 "parsing/parser.ml" in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2932 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( let loc = _loc_l1_ in [ x2; Some l1, mkexpvar ~loc l1] ) -# 47115 "parsing/parser.ml" +# 47199 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47174,7 +47258,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47178 "parsing/parser.ml" +# 47262 "parsing/parser.ml" = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47190,18 +47274,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 47194 "parsing/parser.ml" +# 47278 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 47199 "parsing/parser.ml" +# 47283 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 47205 "parsing/parser.ml" +# 47289 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -47210,22 +47294,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 47216 "parsing/parser.ml" +# 47300 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 47222 "parsing/parser.ml" +# 47306 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -47238,27 +47322,27 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 47242 "parsing/parser.ml" +# 47326 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 47248 "parsing/parser.ml" +# 47332 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 47254 "parsing/parser.ml" +# 47338 "parsing/parser.ml" in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2932 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( let loc = _loc_l1_ in [ x2; Some l1, mkexpvar ~loc l1] ) -# 47262 "parsing/parser.ml" +# 47346 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47305,13 +47389,13 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 47309 "parsing/parser.ml" +# 47393 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : unit = Obj.magic _3 in let l1 : # 825 "parsing/parser.mly" (string) -# 47315 "parsing/parser.ml" +# 47399 "parsing/parser.ml" = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47321,17 +47405,17 @@ module Tables = struct let x2 = let _1 = _1_inlined1 in -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 47327 "parsing/parser.ml" +# 47411 "parsing/parser.ml" in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2932 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( let loc = _loc_l1_ in [ x2; Some l1, mkexpvar ~loc l1] ) -# 47335 "parsing/parser.ml" +# 47419 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47377,14 +47461,14 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 47381 "parsing/parser.ml" +# 47465 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _3 : unit = Obj.magic _3 in let l1 : # 825 "parsing/parser.mly" (string) -# 47388 "parsing/parser.ml" +# 47472 "parsing/parser.ml" = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47394,18 +47478,18 @@ module Tables = struct let x2 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 47401 "parsing/parser.ml" +# 47485 "parsing/parser.ml" in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2932 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( let loc = _loc_l1_ in [ x2; Some l1, mkexpvar ~loc l1] ) -# 47409 "parsing/parser.ml" +# 47493 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47471,7 +47555,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 47475 "parsing/parser.ml" +# 47559 "parsing/parser.ml" = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -47479,7 +47563,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47483 "parsing/parser.ml" +# 47567 "parsing/parser.ml" = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47490,19 +47574,19 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 47498 "parsing/parser.ml" +# 47582 "parsing/parser.ml" in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2932 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( let loc = _loc_l1_ in [ x2; Some l1, mkexpvar ~loc l1] ) -# 47506 "parsing/parser.ml" +# 47590 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47564,7 +47648,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47568 "parsing/parser.ml" +# 47652 "parsing/parser.ml" = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -47576,33 +47660,33 @@ module Tables = struct let _1 = _1_inlined1 in let _1 = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 47582 "parsing/parser.ml" +# 47666 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 47587 "parsing/parser.ml" +# 47671 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 47593 "parsing/parser.ml" +# 47677 "parsing/parser.ml" in let _endpos_x2_ = _endpos__1_inlined1_ in let _endpos = _endpos_x2_ in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2937 "parsing/parser.mly" +# 2944 "parsing/parser.mly" ( let x1 = mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_l1_ l1) c in [ x2; Some l1, x1] ) -# 47606 "parsing/parser.ml" +# 47690 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47685,7 +47769,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47689 "parsing/parser.ml" +# 47773 "parsing/parser.ml" = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -47702,18 +47786,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 47706 "parsing/parser.ml" +# 47790 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 47711 "parsing/parser.ml" +# 47795 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 47717 "parsing/parser.ml" +# 47801 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -47722,22 +47806,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 47728 "parsing/parser.ml" +# 47812 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 47734 "parsing/parser.ml" +# 47818 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -47750,32 +47834,32 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 47754 "parsing/parser.ml" +# 47838 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 47760 "parsing/parser.ml" +# 47844 "parsing/parser.ml" in -# 2903 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( None, _1 ) -# 47766 "parsing/parser.ml" +# 47850 "parsing/parser.ml" in let _endpos_x2_ = _endpos_xs_ in let _endpos = _endpos_x2_ in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2937 "parsing/parser.mly" +# 2944 "parsing/parser.mly" ( let x1 = mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_l1_ l1) c in [ x2; Some l1, x1] ) -# 47779 "parsing/parser.ml" +# 47863 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47840,7 +47924,7 @@ module Tables = struct let _1_inlined1 : # 812 "parsing/parser.mly" (string) -# 47844 "parsing/parser.ml" +# 47928 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in @@ -47848,7 +47932,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47852 "parsing/parser.ml" +# 47936 "parsing/parser.ml" = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -47859,22 +47943,22 @@ module Tables = struct let x2 = let (_1, _2) = (_1_inlined1, _2_inlined1) in -# 2905 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( Some _1, _2 ) -# 47865 "parsing/parser.ml" +# 47949 "parsing/parser.ml" in let _endpos_x2_ = _endpos__2_inlined1_ in let _endpos = _endpos_x2_ in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2937 "parsing/parser.mly" +# 2944 "parsing/parser.mly" ( let x1 = mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_l1_ l1) c in [ x2; Some l1, x1] ) -# 47878 "parsing/parser.ml" +# 47962 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -47938,7 +48022,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 47942 "parsing/parser.ml" +# 48026 "parsing/parser.ml" = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _6 : unit = Obj.magic _6 in @@ -47947,7 +48031,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 47951 "parsing/parser.ml" +# 48035 "parsing/parser.ml" = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -47958,23 +48042,23 @@ module Tables = struct let x2 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2907 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkexpvar ~loc label ) -# 47965 "parsing/parser.ml" +# 48049 "parsing/parser.ml" in let _endpos_x2_ = _endpos_label_ in let _endpos = _endpos_x2_ in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2937 "parsing/parser.mly" +# 2944 "parsing/parser.mly" ( let x1 = mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_l1_ l1) c in [ x2; Some l1, x1] ) -# 47978 "parsing/parser.ml" +# 48062 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -48058,7 +48142,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 48062 "parsing/parser.ml" +# 48146 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -48068,7 +48152,7 @@ module Tables = struct let l1 : # 825 "parsing/parser.mly" (string) -# 48072 "parsing/parser.ml" +# 48156 "parsing/parser.ml" = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -48081,24 +48165,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2910 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( Some label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) c ) -# 48089 "parsing/parser.ml" +# 48173 "parsing/parser.ml" in let _endpos_x2_ = _endpos__5_inlined1_ in let _endpos = _endpos_x2_ in let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2937 "parsing/parser.mly" +# 2944 "parsing/parser.mly" ( let x1 = mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_l1_ l1) c in [ x2; Some l1, x1] ) -# 48102 "parsing/parser.ml" +# 48186 "parsing/parser.ml" : ((string option * Parsetree.expression) list)) in { @@ -48122,9 +48206,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = -# 3205 "parsing/parser.mly" +# 3212 "parsing/parser.mly" ( Closed, _1 ) -# 48128 "parsing/parser.ml" +# 48212 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48161,9 +48245,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = -# 3207 "parsing/parser.mly" +# 3214 "parsing/parser.mly" ( Open, _1 ) -# 48167 "parsing/parser.ml" +# 48251 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48201,14 +48285,14 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 48207 "parsing/parser.ml" +# 48291 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48212 "parsing/parser.ml" +# 48296 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48251,7 +48335,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 48255 "parsing/parser.ml" +# 48339 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -48260,15 +48344,15 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 48266 "parsing/parser.ml" +# 48350 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48272 "parsing/parser.ml" +# 48356 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48310,7 +48394,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 48314 "parsing/parser.ml" +# 48398 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -48320,16 +48404,16 @@ module Tables = struct let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 48327 "parsing/parser.ml" +# 48411 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48333 "parsing/parser.ml" +# 48417 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48398,7 +48482,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 48402 "parsing/parser.ml" +# 48486 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -48411,18 +48495,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 48420 "parsing/parser.ml" +# 48504 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48426 "parsing/parser.ml" +# 48510 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48446,9 +48530,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = -# 3205 "parsing/parser.mly" +# 3212 "parsing/parser.mly" ( Closed, _1 ) -# 48452 "parsing/parser.ml" +# 48536 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48485,9 +48569,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = -# 3207 "parsing/parser.mly" +# 3214 "parsing/parser.mly" ( Open, _1 ) -# 48491 "parsing/parser.ml" +# 48575 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48525,14 +48609,14 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 3183 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( None, _1 ) -# 48531 "parsing/parser.ml" +# 48615 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48536 "parsing/parser.ml" +# 48620 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48575,7 +48659,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 48579 "parsing/parser.ml" +# 48663 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -48584,15 +48668,15 @@ module Tables = struct let _1 = let _2 = _2_inlined1 in -# 3185 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( Some _1, _2 ) -# 48590 "parsing/parser.ml" +# 48674 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48596 "parsing/parser.ml" +# 48680 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48634,7 +48718,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 48638 "parsing/parser.ml" +# 48722 "parsing/parser.ml" = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -48644,16 +48728,16 @@ module Tables = struct let _1 = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3187 "parsing/parser.mly" +# 3194 "parsing/parser.mly" ( let loc = _loc_label_ in Some label, mkpatvar ~loc label ) -# 48651 "parsing/parser.ml" +# 48735 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48657 "parsing/parser.ml" +# 48741 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48722,7 +48806,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 48726 "parsing/parser.ml" +# 48810 "parsing/parser.ml" = Obj.magic label in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -48735,18 +48819,18 @@ module Tables = struct let _endpos = _endpos__6_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3190 "parsing/parser.mly" +# 3197 "parsing/parser.mly" ( let lbl_loc = _loc_label_ in let pat_loc = _startpos__2_, _endpos in let pat = mkpatvar ~loc:lbl_loc label in Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) -# 48744 "parsing/parser.ml" +# 48828 "parsing/parser.ml" in ( -# 3209 "parsing/parser.mly" +# 3216 "parsing/parser.mly" ( Open, [ _1 ] ) -# 48750 "parsing/parser.ml" +# 48834 "parsing/parser.ml" : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { @@ -48763,9 +48847,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = -# 1086 "parsing/parser.mly" +# 1088 "parsing/parser.mly" ( [] ) -# 48769 "parsing/parser.ml" +# 48853 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48823,21 +48907,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2248 "parsing/parser.mly" +# 2253 "parsing/parser.mly" ( _1, _3, make_loc _sloc ) -# 48829 "parsing/parser.ml" +# 48913 "parsing/parser.ml" in # 188 "" ( x ) -# 48835 "parsing/parser.ml" +# 48919 "parsing/parser.ml" in ( -# 1088 "parsing/parser.mly" +# 1090 "parsing/parser.mly" ( x :: xs ) -# 48841 "parsing/parser.ml" +# 48925 "parsing/parser.ml" : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list)) in { @@ -48861,9 +48945,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.function_param list) = -# 1119 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( List.rev x ) -# 48867 "parsing/parser.ml" +# 48951 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48893,9 +48977,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.function_param list) = -# 1121 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( List.rev_append x xs ) -# 48899 "parsing/parser.ml" +# 48983 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48918,9 +49002,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1100 "parsing/parser.mly" +# 1102 "parsing/parser.mly" ( [ x ] ) -# 48924 "parsing/parser.ml" +# 49008 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48950,9 +49034,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1102 "parsing/parser.mly" +# 1104 "parsing/parser.mly" ( x :: xs ) -# 48956 "parsing/parser.ml" +# 49040 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48975,9 +49059,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1100 "parsing/parser.mly" +# 1102 "parsing/parser.mly" ( [ x ] ) -# 48981 "parsing/parser.ml" +# 49065 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49007,9 +49091,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1102 "parsing/parser.mly" +# 1104 "parsing/parser.mly" ( x :: xs ) -# 49013 "parsing/parser.ml" +# 49097 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49032,9 +49116,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1100 "parsing/parser.mly" +# 1102 "parsing/parser.mly" ( [ x ] ) -# 49038 "parsing/parser.ml" +# 49122 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49064,9 +49148,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1102 "parsing/parser.mly" +# 1104 "parsing/parser.mly" ( x :: xs ) -# 49070 "parsing/parser.ml" +# 49154 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49101,15 +49185,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3665 "parsing/parser.mly" +# 3674 "parsing/parser.mly" ( mkrhs _2 _sloc ) -# 49107 "parsing/parser.ml" +# 49191 "parsing/parser.ml" in ( -# 1100 "parsing/parser.mly" +# 1102 "parsing/parser.mly" ( [ x ] ) -# 49113 "parsing/parser.ml" +# 49197 "parsing/parser.ml" : (Asttypes.label Asttypes.loc list)) in { @@ -49152,15 +49236,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3665 "parsing/parser.mly" +# 3674 "parsing/parser.mly" ( mkrhs _2 _sloc ) -# 49158 "parsing/parser.ml" +# 49242 "parsing/parser.ml" in ( -# 1102 "parsing/parser.mly" +# 1104 "parsing/parser.mly" ( x :: xs ) -# 49164 "parsing/parser.ml" +# 49248 "parsing/parser.ml" : (Asttypes.label Asttypes.loc list)) in { @@ -49187,12 +49271,12 @@ module Tables = struct let _1 = # 123 "" ( None ) -# 49191 "parsing/parser.ml" +# 49275 "parsing/parser.ml" in ( -# 1212 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( [x] ) -# 49196 "parsing/parser.ml" +# 49280 "parsing/parser.ml" : (Parsetree.case list)) in { @@ -49228,13 +49312,13 @@ module Tables = struct # 126 "" ( Some x ) -# 49232 "parsing/parser.ml" +# 49316 "parsing/parser.ml" in ( -# 1212 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( [x] ) -# 49238 "parsing/parser.ml" +# 49322 "parsing/parser.ml" : (Parsetree.case list)) in { @@ -49272,9 +49356,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.case list) = -# 1216 "parsing/parser.mly" +# 1218 "parsing/parser.mly" ( x :: xs ) -# 49278 "parsing/parser.ml" +# 49362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49299,20 +49383,20 @@ module Tables = struct let _v = let xs = let x = -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 49305 "parsing/parser.ml" +# 49389 "parsing/parser.ml" in -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49310 "parsing/parser.ml" +# 49394 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49316 "parsing/parser.ml" +# 49400 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49352,20 +49436,20 @@ module Tables = struct let _v = let xs = let x = -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 49358 "parsing/parser.ml" +# 49442 "parsing/parser.ml" in -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49363 "parsing/parser.ml" +# 49447 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49369 "parsing/parser.ml" +# 49453 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49390,14 +49474,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49396 "parsing/parser.ml" +# 49480 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49401 "parsing/parser.ml" +# 49485 "parsing/parser.ml" : (Parsetree.with_constraint list)) in { @@ -49436,14 +49520,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49442 "parsing/parser.ml" +# 49526 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49447 "parsing/parser.ml" +# 49531 "parsing/parser.ml" : (Parsetree.with_constraint list)) in { @@ -49468,14 +49552,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49474 "parsing/parser.ml" +# 49558 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49479 "parsing/parser.ml" +# 49563 "parsing/parser.ml" : (Parsetree.row_field list)) in { @@ -49514,14 +49598,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49520 "parsing/parser.ml" +# 49604 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49525 "parsing/parser.ml" +# 49609 "parsing/parser.ml" : (Parsetree.row_field list)) in { @@ -49546,14 +49630,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49552 "parsing/parser.ml" +# 49636 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49557 "parsing/parser.ml" +# 49641 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49592,14 +49676,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49598 "parsing/parser.ml" +# 49682 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49603 "parsing/parser.ml" +# 49687 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49624,14 +49708,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49630 "parsing/parser.ml" +# 49714 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49635 "parsing/parser.ml" +# 49719 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -49670,14 +49754,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49676 "parsing/parser.ml" +# 49760 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49681 "parsing/parser.ml" +# 49765 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -49702,14 +49786,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49708 "parsing/parser.ml" +# 49792 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49713 "parsing/parser.ml" +# 49797 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49748,14 +49832,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49754 "parsing/parser.ml" +# 49838 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49759 "parsing/parser.ml" +# 49843 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -49781,20 +49865,20 @@ module Tables = struct let _v = let xs = let x = -# 3834 "parsing/parser.mly" +# 3843 "parsing/parser.mly" ( None, _1 ) -# 49787 "parsing/parser.ml" +# 49871 "parsing/parser.ml" in -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49792 "parsing/parser.ml" +# 49876 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49798 "parsing/parser.ml" +# 49882 "parsing/parser.ml" : ((string option * Parsetree.core_type) list)) in { @@ -49830,7 +49914,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 49834 "parsing/parser.ml" +# 49918 "parsing/parser.ml" = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49838,20 +49922,20 @@ module Tables = struct let _v = let xs = let x = -# 3836 "parsing/parser.mly" +# 3845 "parsing/parser.mly" ( Some label, ty ) -# 49844 "parsing/parser.ml" +# 49928 "parsing/parser.ml" in -# 1147 "parsing/parser.mly" +# 1149 "parsing/parser.mly" ( [ x ] ) -# 49849 "parsing/parser.ml" +# 49933 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49855 "parsing/parser.ml" +# 49939 "parsing/parser.ml" : ((string option * Parsetree.core_type) list)) in { @@ -49891,20 +49975,20 @@ module Tables = struct let _v = let xs = let x = -# 3834 "parsing/parser.mly" +# 3843 "parsing/parser.mly" ( None, _1 ) -# 49897 "parsing/parser.ml" +# 49981 "parsing/parser.ml" in -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49902 "parsing/parser.ml" +# 49986 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49908 "parsing/parser.ml" +# 49992 "parsing/parser.ml" : ((string option * Parsetree.core_type) list)) in { @@ -49952,7 +50036,7 @@ module Tables = struct let label : # 825 "parsing/parser.mly" (string) -# 49956 "parsing/parser.ml" +# 50040 "parsing/parser.ml" = Obj.magic label in let _2 : unit = Obj.magic _2 in let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in @@ -49962,20 +50046,20 @@ module Tables = struct let _v = let xs = let x = -# 3836 "parsing/parser.mly" +# 3845 "parsing/parser.mly" ( Some label, ty ) -# 49968 "parsing/parser.ml" +# 50052 "parsing/parser.ml" in -# 1151 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( x :: xs ) -# 49973 "parsing/parser.ml" +# 50057 "parsing/parser.ml" in ( -# 1155 "parsing/parser.mly" +# 1157 "parsing/parser.mly" ( xs ) -# 49979 "parsing/parser.ml" +# 50063 "parsing/parser.ml" : ((string option * Parsetree.core_type) list)) in { @@ -50013,9 +50097,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1178 "parsing/parser.mly" +# 1180 "parsing/parser.mly" ( x :: xs ) -# 50019 "parsing/parser.ml" +# 50103 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50052,9 +50136,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1182 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( [ x2; x1 ] ) -# 50058 "parsing/parser.ml" +# 50142 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50077,9 +50161,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.row_field) = -# 3977 "parsing/parser.mly" +# 3986 "parsing/parser.mly" ( _1 ) -# 50083 "parsing/parser.ml" +# 50167 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50106,9 +50190,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3979 "parsing/parser.mly" +# 3988 "parsing/parser.mly" ( Rf.inherit_ ~loc:(make_loc _sloc) _1 ) -# 50112 "parsing/parser.ml" +# 50196 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -50135,24 +50219,24 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 50139 "parsing/parser.ml" +# 50223 "parsing/parser.ml" in let x = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 50145 "parsing/parser.ml" +# 50229 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50150 "parsing/parser.ml" +# 50234 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50156 "parsing/parser.ml" +# 50240 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50186,24 +50270,24 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 50190 "parsing/parser.ml" +# 50274 "parsing/parser.ml" in let x = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 50196 "parsing/parser.ml" +# 50280 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50201 "parsing/parser.ml" +# 50285 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50207 "parsing/parser.ml" +# 50291 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50251,7 +50335,7 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 50255 "parsing/parser.ml" +# 50339 "parsing/parser.ml" in let x = let _1 = @@ -50260,18 +50344,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 50264 "parsing/parser.ml" +# 50348 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 50269 "parsing/parser.ml" +# 50353 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 50275 "parsing/parser.ml" +# 50359 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -50280,22 +50364,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 50286 "parsing/parser.ml" +# 50370 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 50292 "parsing/parser.ml" +# 50376 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -50308,19 +50392,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 50312 "parsing/parser.ml" +# 50396 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50318 "parsing/parser.ml" +# 50402 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50324 "parsing/parser.ml" +# 50408 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50375,7 +50459,7 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 50379 "parsing/parser.ml" +# 50463 "parsing/parser.ml" in let x = let _1 = @@ -50384,18 +50468,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 50388 "parsing/parser.ml" +# 50472 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 50393 "parsing/parser.ml" +# 50477 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 50399 "parsing/parser.ml" +# 50483 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -50404,22 +50488,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 50410 "parsing/parser.ml" +# 50494 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 50416 "parsing/parser.ml" +# 50500 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -50432,19 +50516,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 50436 "parsing/parser.ml" +# 50520 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50442 "parsing/parser.ml" +# 50526 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50448 "parsing/parser.ml" +# 50532 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50484,20 +50568,20 @@ module Tables = struct let _v = let x = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 50490 "parsing/parser.ml" +# 50574 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50495 "parsing/parser.ml" +# 50579 "parsing/parser.ml" in ( -# 1203 "parsing/parser.mly" +# 1205 "parsing/parser.mly" ( x :: xs ) -# 50501 "parsing/parser.ml" +# 50585 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50564,18 +50648,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 50568 "parsing/parser.ml" +# 50652 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 50573 "parsing/parser.ml" +# 50657 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 50579 "parsing/parser.ml" +# 50663 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -50584,22 +50668,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 50590 "parsing/parser.ml" +# 50674 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 50596 "parsing/parser.ml" +# 50680 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -50612,19 +50696,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 50616 "parsing/parser.ml" +# 50700 "parsing/parser.ml" in -# 2493 "parsing/parser.mly" +# 2494 "parsing/parser.mly" ( _1 ) -# 50622 "parsing/parser.ml" +# 50706 "parsing/parser.ml" in ( -# 1203 "parsing/parser.mly" +# 1205 "parsing/parser.mly" ( x :: xs ) -# 50628 "parsing/parser.ml" +# 50712 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -50653,7 +50737,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 50657 "parsing/parser.ml" +# 50741 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -50662,26 +50746,26 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 50666 "parsing/parser.ml" +# 50750 "parsing/parser.ml" in let x = let label = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 50673 "parsing/parser.ml" +# 50757 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50681 "parsing/parser.ml" +# 50765 "parsing/parser.ml" in -# 2979 "parsing/parser.mly" +# 2986 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -50691,13 +50775,13 @@ module Tables = struct label, e in label, e ) -# 50695 "parsing/parser.ml" +# 50779 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50701 "parsing/parser.ml" +# 50785 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -50733,7 +50817,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 50737 "parsing/parser.ml" +# 50821 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -50742,26 +50826,26 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 50746 "parsing/parser.ml" +# 50830 "parsing/parser.ml" in let x = let label = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 50753 "parsing/parser.ml" +# 50837 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50761 "parsing/parser.ml" +# 50845 "parsing/parser.ml" in -# 2979 "parsing/parser.mly" +# 2986 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -50771,13 +50855,13 @@ module Tables = struct label, e in label, e ) -# 50775 "parsing/parser.ml" +# 50859 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50781 "parsing/parser.ml" +# 50865 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -50820,7 +50904,7 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 50824 "parsing/parser.ml" +# 50908 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -50829,21 +50913,21 @@ module Tables = struct let x = let label = let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 50835 "parsing/parser.ml" +# 50919 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50843 "parsing/parser.ml" +# 50927 "parsing/parser.ml" in -# 2979 "parsing/parser.mly" +# 2986 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -50853,13 +50937,13 @@ module Tables = struct label, e in label, e ) -# 50857 "parsing/parser.ml" +# 50941 "parsing/parser.ml" in ( -# 1203 "parsing/parser.mly" +# 1205 "parsing/parser.mly" ( x :: xs ) -# 50863 "parsing/parser.ml" +# 50947 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -50886,12 +50970,12 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 50890 "parsing/parser.ml" +# 50974 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50895 "parsing/parser.ml" +# 50979 "parsing/parser.ml" : (Parsetree.pattern list)) in { @@ -50927,13 +51011,13 @@ module Tables = struct # 126 "" ( Some x ) -# 50931 "parsing/parser.ml" +# 51015 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 50937 "parsing/parser.ml" +# 51021 "parsing/parser.ml" : (Parsetree.pattern list)) in { @@ -50971,9 +51055,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.pattern list) = -# 1203 "parsing/parser.mly" +# 1205 "parsing/parser.mly" ( x :: xs ) -# 50977 "parsing/parser.ml" +# 51061 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51013,7 +51097,7 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 51017 "parsing/parser.ml" +# 51101 "parsing/parser.ml" in let x = let label = @@ -51021,9 +51105,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51027 "parsing/parser.ml" +# 51111 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -51031,7 +51115,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2962 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -51041,13 +51125,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 51045 "parsing/parser.ml" +# 51129 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 51051 "parsing/parser.ml" +# 51135 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -51095,7 +51179,7 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 51099 "parsing/parser.ml" +# 51183 "parsing/parser.ml" in let x = let label = @@ -51103,9 +51187,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51109 "parsing/parser.ml" +# 51193 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -51113,7 +51197,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2962 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -51123,13 +51207,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 51127 "parsing/parser.ml" +# 51211 "parsing/parser.ml" in ( -# 1199 "parsing/parser.mly" +# 1201 "parsing/parser.mly" ( [x] ) -# 51133 "parsing/parser.ml" +# 51217 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -51187,9 +51271,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51193 "parsing/parser.ml" +# 51277 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -51197,7 +51281,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2962 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -51207,13 +51291,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 51211 "parsing/parser.ml" +# 51295 "parsing/parser.ml" in ( -# 1203 "parsing/parser.mly" +# 1205 "parsing/parser.mly" ( x :: xs ) -# 51217 "parsing/parser.ml" +# 51301 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -51238,14 +51322,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 2338 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( _1 ) -# 51244 "parsing/parser.ml" +# 51328 "parsing/parser.ml" in ( -# 2374 "parsing/parser.mly" +# 2379 "parsing/parser.mly" ( _1 ) -# 51249 "parsing/parser.ml" +# 51333 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51296,18 +51380,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 51300 "parsing/parser.ml" +# 51384 "parsing/parser.ml" in -# 1224 "parsing/parser.mly" +# 1226 "parsing/parser.mly" ( xs ) -# 51305 "parsing/parser.ml" +# 51389 "parsing/parser.ml" in -# 2835 "parsing/parser.mly" +# 2842 "parsing/parser.mly" ( xs ) -# 51311 "parsing/parser.ml" +# 51395 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -51316,22 +51400,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 51322 "parsing/parser.ml" +# 51406 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 51328 "parsing/parser.ml" +# 51412 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -51344,13 +51428,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 51348 "parsing/parser.ml" +# 51432 "parsing/parser.ml" in ( -# 2374 "parsing/parser.mly" +# 2379 "parsing/parser.mly" ( _1 ) -# 51354 "parsing/parser.ml" +# 51438 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51420,18 +51504,18 @@ module Tables = struct let attrs = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 51426 "parsing/parser.ml" +# 51510 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined4_ in let attrs2 = let _1 = _1_inlined3 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 51435 "parsing/parser.ml" +# 51519 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -51441,17 +51525,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51447 "parsing/parser.ml" +# 51531 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 51455 "parsing/parser.ml" +# 51539 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in @@ -51459,14 +51543,14 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3524 "parsing/parser.mly" +# 3531 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let loc = make_loc (_startpos, _endpos_attrs2_) in let docs = symbol_docs _sloc in Te.mk_exception ~attrs ~loc (Te.decl id ~vars ~args ?res ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 51470 "parsing/parser.ml" +# 51554 "parsing/parser.ml" : (Parsetree.type_exception * string Asttypes.loc option)) in { @@ -51494,21 +51578,21 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 51498 "parsing/parser.ml" +# 51582 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1005 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( extra_sig _startpos _endpos _1 ) -# 51506 "parsing/parser.ml" +# 51590 "parsing/parser.ml" in ( -# 1787 "parsing/parser.mly" +# 1792 "parsing/parser.mly" ( _1 ) -# 51512 "parsing/parser.ml" +# 51596 "parsing/parser.ml" : (Parsetree.signature)) in { @@ -51544,9 +51628,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 51550 "parsing/parser.ml" +# 51634 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -51554,9 +51638,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1803 "parsing/parser.mly" +# 1808 "parsing/parser.mly" ( psig_extension _1 (add_docs_attrs (symbol_docs _sloc) _2) ) -# 51560 "parsing/parser.ml" +# 51644 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -51564,15 +51648,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51570 "parsing/parser.ml" +# 51654 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51576 "parsing/parser.ml" +# 51660 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51598,23 +51682,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1805 "parsing/parser.mly" +# 1810 "parsing/parser.mly" ( psig_attribute _1 ) -# 51604 "parsing/parser.ml" +# 51688 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51612 "parsing/parser.ml" +# 51696 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51618 "parsing/parser.ml" +# 51702 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51640,23 +51724,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1807 "parsing/parser.mly" +# 1812 "parsing/parser.mly" ( psig_value _1 ) -# 51646 "parsing/parser.ml" +# 51730 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51654 "parsing/parser.ml" +# 51738 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51660 "parsing/parser.ml" +# 51744 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51682,23 +51766,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1809 "parsing/parser.mly" +# 1814 "parsing/parser.mly" ( psig_primitive _1 ) -# 51688 "parsing/parser.ml" +# 51772 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51696 "parsing/parser.ml" +# 51780 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51702 "parsing/parser.ml" +# 51786 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51735,26 +51819,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 51741 "parsing/parser.ml" +# 51825 "parsing/parser.ml" in -# 3338 "parsing/parser.mly" +# 3345 "parsing/parser.mly" ( _1 ) -# 51746 "parsing/parser.ml" +# 51830 "parsing/parser.ml" in -# 3321 "parsing/parser.mly" +# 3328 "parsing/parser.mly" ( _1 ) -# 51752 "parsing/parser.ml" +# 51836 "parsing/parser.ml" in -# 1811 "parsing/parser.mly" +# 1816 "parsing/parser.mly" ( psig_type _1 ) -# 51758 "parsing/parser.ml" +# 51842 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -51762,15 +51846,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51768 "parsing/parser.ml" +# 51852 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51774 "parsing/parser.ml" +# 51858 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51807,26 +51891,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 51813 "parsing/parser.ml" +# 51897 "parsing/parser.ml" in -# 3338 "parsing/parser.mly" +# 3345 "parsing/parser.mly" ( _1 ) -# 51818 "parsing/parser.ml" +# 51902 "parsing/parser.ml" in -# 3326 "parsing/parser.mly" +# 3333 "parsing/parser.mly" ( _1 ) -# 51824 "parsing/parser.ml" +# 51908 "parsing/parser.ml" in -# 1813 "parsing/parser.mly" +# 1818 "parsing/parser.mly" ( psig_typesubst _1 ) -# 51830 "parsing/parser.ml" +# 51914 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -51834,15 +51918,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 51840 "parsing/parser.ml" +# 51924 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 51846 "parsing/parser.ml" +# 51930 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -51929,16 +52013,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 51935 "parsing/parser.ml" +# 52019 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1252 "parsing/parser.mly" +# 1254 "parsing/parser.mly" ( List.rev xs ) -# 51942 "parsing/parser.ml" +# 52026 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -51946,47 +52030,47 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51952 "parsing/parser.ml" +# 52036 "parsing/parser.ml" in let _4 = -# 4231 "parsing/parser.mly" +# 4240 "parsing/parser.mly" ( Recursive ) -# 51958 "parsing/parser.ml" +# 52042 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 51965 "parsing/parser.ml" +# 52049 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3593 "parsing/parser.mly" +# 3600 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 51978 "parsing/parser.ml" +# 52062 "parsing/parser.ml" in -# 3580 "parsing/parser.mly" +# 3587 "parsing/parser.mly" ( _1 ) -# 51984 "parsing/parser.ml" +# 52068 "parsing/parser.ml" in -# 1815 "parsing/parser.mly" +# 1820 "parsing/parser.mly" ( psig_typext _1 ) -# 51990 "parsing/parser.ml" +# 52074 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -51994,15 +52078,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52000 "parsing/parser.ml" +# 52084 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52006 "parsing/parser.ml" +# 52090 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52096,16 +52180,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 52102 "parsing/parser.ml" +# 52186 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1252 "parsing/parser.mly" +# 1254 "parsing/parser.mly" ( List.rev xs ) -# 52109 "parsing/parser.ml" +# 52193 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -52113,9 +52197,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52119 "parsing/parser.ml" +# 52203 "parsing/parser.ml" in let _4 = @@ -52124,42 +52208,42 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4233 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 52130 "parsing/parser.ml" +# 52214 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 52138 "parsing/parser.ml" +# 52222 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3593 "parsing/parser.mly" +# 3600 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 52151 "parsing/parser.ml" +# 52235 "parsing/parser.ml" in -# 3580 "parsing/parser.mly" +# 3587 "parsing/parser.mly" ( _1 ) -# 52157 "parsing/parser.ml" +# 52241 "parsing/parser.ml" in -# 1815 "parsing/parser.mly" +# 1820 "parsing/parser.mly" ( psig_typext _1 ) -# 52163 "parsing/parser.ml" +# 52247 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -52167,15 +52251,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52173 "parsing/parser.ml" +# 52257 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52179 "parsing/parser.ml" +# 52263 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52201,23 +52285,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1817 "parsing/parser.mly" +# 1822 "parsing/parser.mly" ( psig_exception _1 ) -# 52207 "parsing/parser.ml" +# 52291 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52215 "parsing/parser.ml" +# 52299 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52221 "parsing/parser.ml" +# 52305 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52282,9 +52366,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 52288 "parsing/parser.ml" +# 52372 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -52294,37 +52378,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52300 "parsing/parser.ml" +# 52384 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 52308 "parsing/parser.ml" +# 52392 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1848 "parsing/parser.mly" +# 1853 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 52322 "parsing/parser.ml" +# 52406 "parsing/parser.ml" in -# 1819 "parsing/parser.mly" +# 1824 "parsing/parser.mly" ( psig_module _1 ) -# 52328 "parsing/parser.ml" +# 52412 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -52332,15 +52416,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52338 "parsing/parser.ml" +# 52422 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52344 "parsing/parser.ml" +# 52428 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52412,9 +52496,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 52418 "parsing/parser.ml" +# 52502 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -52425,9 +52509,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52431 "parsing/parser.ml" +# 52515 "parsing/parser.ml" in let (_endpos_id_, _startpos_id_) = (_endpos__1_, _startpos__1_) in @@ -52435,9 +52519,9 @@ module Tables = struct let _symbolstartpos = _startpos_id_ in let _sloc = (_symbolstartpos, _endpos) in -# 1887 "parsing/parser.mly" +# 1892 "parsing/parser.mly" ( Mty.alias ~loc:(make_loc _sloc) id ) -# 52441 "parsing/parser.ml" +# 52525 "parsing/parser.ml" in let name = @@ -52446,37 +52530,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52452 "parsing/parser.ml" +# 52536 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 52460 "parsing/parser.ml" +# 52544 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1878 "parsing/parser.mly" +# 1883 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 52474 "parsing/parser.ml" +# 52558 "parsing/parser.ml" in -# 1821 "parsing/parser.mly" +# 1826 "parsing/parser.mly" ( psig_module _1 ) -# 52480 "parsing/parser.ml" +# 52564 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -52484,15 +52568,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52490 "parsing/parser.ml" +# 52574 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52496 "parsing/parser.ml" +# 52580 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52518,23 +52602,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1823 "parsing/parser.mly" +# 1828 "parsing/parser.mly" ( psig_modsubst _1 ) -# 52524 "parsing/parser.ml" +# 52608 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52532 "parsing/parser.ml" +# 52616 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52538 "parsing/parser.ml" +# 52622 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52622,9 +52706,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 52628 "parsing/parser.ml" +# 52712 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -52634,49 +52718,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52640 "parsing/parser.ml" +# 52724 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 52648 "parsing/parser.ml" +# 52732 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1921 "parsing/parser.mly" +# 1926 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in ext, Md.mk name mty ~attrs ~loc ~docs ) -# 52662 "parsing/parser.ml" +# 52746 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 52668 "parsing/parser.ml" +# 52752 "parsing/parser.ml" in -# 1910 "parsing/parser.mly" +# 1915 "parsing/parser.mly" ( _1 ) -# 52674 "parsing/parser.ml" +# 52758 "parsing/parser.ml" in -# 1825 "parsing/parser.mly" +# 1830 "parsing/parser.mly" ( psig_recmodule _1 ) -# 52680 "parsing/parser.ml" +# 52764 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -52684,15 +52768,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52690 "parsing/parser.ml" +# 52774 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52696 "parsing/parser.ml" +# 52780 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52718,23 +52802,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1827 "parsing/parser.mly" +# 1832 "parsing/parser.mly" ( psig_modtype _1 ) -# 52724 "parsing/parser.ml" +# 52808 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52732 "parsing/parser.ml" +# 52816 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52738 "parsing/parser.ml" +# 52822 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52760,23 +52844,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1829 "parsing/parser.mly" +# 1834 "parsing/parser.mly" ( psig_modtypesubst _1 ) -# 52766 "parsing/parser.ml" +# 52850 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52774 "parsing/parser.ml" +# 52858 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52780 "parsing/parser.ml" +# 52864 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52802,23 +52886,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1831 "parsing/parser.mly" +# 1836 "parsing/parser.mly" ( psig_open _1 ) -# 52808 "parsing/parser.ml" +# 52892 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52816 "parsing/parser.ml" +# 52900 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52822 "parsing/parser.ml" +# 52906 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -52876,38 +52960,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 52882 "parsing/parser.ml" +# 52966 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 52891 "parsing/parser.ml" +# 52975 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1677 "parsing/parser.mly" +# 1682 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 52905 "parsing/parser.ml" +# 52989 "parsing/parser.ml" in -# 1833 "parsing/parser.mly" +# 1838 "parsing/parser.mly" ( psig_include _1 ) -# 52911 "parsing/parser.ml" +# 52995 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -52915,15 +52999,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 52921 "parsing/parser.ml" +# 53005 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 52927 "parsing/parser.ml" +# 53011 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -53003,7 +53087,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 53007 "parsing/parser.ml" +# 53091 "parsing/parser.ml" = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -53022,9 +53106,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 53028 "parsing/parser.ml" +# 53112 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -53034,24 +53118,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53040 "parsing/parser.ml" +# 53124 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 53048 "parsing/parser.ml" +# 53132 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2269 "parsing/parser.mly" +# 2274 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -53059,25 +53143,25 @@ module Tables = struct ext, Ci.mk id cty ~virt ~params ~attrs ~loc ~docs ) -# 53063 "parsing/parser.ml" +# 53147 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1262 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 53069 "parsing/parser.ml" +# 53153 "parsing/parser.ml" in -# 2257 "parsing/parser.mly" +# 2262 "parsing/parser.mly" ( _1 ) -# 53075 "parsing/parser.ml" +# 53159 "parsing/parser.ml" in -# 1835 "parsing/parser.mly" +# 1840 "parsing/parser.mly" ( psig_class _1 ) -# 53081 "parsing/parser.ml" +# 53165 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -53085,15 +53169,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 53091 "parsing/parser.ml" +# 53175 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 53097 "parsing/parser.ml" +# 53181 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -53119,23 +53203,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1837 "parsing/parser.mly" +# 1842 "parsing/parser.mly" ( psig_class_type _1 ) -# 53125 "parsing/parser.ml" +# 53209 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1066 "parsing/parser.mly" +# 1068 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 53133 "parsing/parser.ml" +# 53217 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" +# 1844 "parsing/parser.mly" ( _1 ) -# 53139 "parsing/parser.ml" +# 53223 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -53159,9 +53243,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4056 "parsing/parser.mly" +# 4065 "parsing/parser.mly" ( _1 ) -# 53165 "parsing/parser.ml" +# 53249 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53188,7 +53272,7 @@ module Tables = struct let _2 : # 811 "parsing/parser.mly" (string * char option) -# 53192 "parsing/parser.ml" +# 53276 "parsing/parser.ml" = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -53199,10 +53283,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4057 "parsing/parser.mly" +# 4066 "parsing/parser.mly" ( let (n, m) = _2 in mkconst ~loc:_sloc (Pconst_integer("-" ^ n, m)) ) -# 53206 "parsing/parser.ml" +# 53290 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -53230,7 +53314,7 @@ module Tables = struct let _2 : # 790 "parsing/parser.mly" (string * char option) -# 53234 "parsing/parser.ml" +# 53318 "parsing/parser.ml" = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -53241,10 +53325,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4059 "parsing/parser.mly" +# 4068 "parsing/parser.mly" ( let (f, m) = _2 in mkconst ~loc:_sloc (Pconst_float("-" ^ f, m)) ) -# 53248 "parsing/parser.ml" +# 53332 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -53272,7 +53356,7 @@ module Tables = struct let _2 : # 811 "parsing/parser.mly" (string * char option) -# 53276 "parsing/parser.ml" +# 53360 "parsing/parser.ml" = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -53283,10 +53367,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4061 "parsing/parser.mly" +# 4070 "parsing/parser.mly" ( let (n, m) = _2 in mkconst ~loc:_sloc (Pconst_integer (n, m)) ) -# 53290 "parsing/parser.ml" +# 53374 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -53314,7 +53398,7 @@ module Tables = struct let _2 : # 790 "parsing/parser.mly" (string * char option) -# 53318 "parsing/parser.ml" +# 53402 "parsing/parser.ml" = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -53325,10 +53409,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4063 "parsing/parser.mly" +# 4072 "parsing/parser.mly" ( let (f, m) = _2 in mkconst ~loc:_sloc (Pconst_float(f, m)) ) -# 53332 "parsing/parser.ml" +# 53416 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -53371,18 +53455,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3224 "parsing/parser.mly" +# 3231 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 53379 "parsing/parser.ml" +# 53463 "parsing/parser.ml" in -# 3139 "parsing/parser.mly" +# 3146 "parsing/parser.mly" ( let (fields, closed) = _2 in Ppat_record(fields, closed) ) -# 53386 "parsing/parser.ml" +# 53470 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53390,15 +53474,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53396 "parsing/parser.ml" +# 53480 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53402 "parsing/parser.ml" +# 53486 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53441,19 +53525,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3224 "parsing/parser.mly" +# 3231 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 53449 "parsing/parser.ml" +# 53533 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3142 "parsing/parser.mly" +# 3149 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 53457 "parsing/parser.ml" +# 53541 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53461,15 +53545,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53467 "parsing/parser.ml" +# 53551 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53473 "parsing/parser.ml" +# 53557 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53510,15 +53594,15 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3218 "parsing/parser.mly" +# 3225 "parsing/parser.mly" ( ps ) -# 53516 "parsing/parser.ml" +# 53600 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3144 "parsing/parser.mly" +# 3151 "parsing/parser.mly" ( fst (mktailpat _loc__3_ _2) ) -# 53522 "parsing/parser.ml" +# 53606 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53526,15 +53610,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53532 "parsing/parser.ml" +# 53616 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53538 "parsing/parser.ml" +# 53622 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53575,16 +53659,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3218 "parsing/parser.mly" +# 3225 "parsing/parser.mly" ( ps ) -# 53581 "parsing/parser.ml" +# 53665 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3146 "parsing/parser.mly" +# 3153 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 53588 "parsing/parser.ml" +# 53672 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53592,15 +53676,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53598 "parsing/parser.ml" +# 53682 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53604 "parsing/parser.ml" +# 53688 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53641,14 +53725,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3218 "parsing/parser.mly" +# 3225 "parsing/parser.mly" ( ps ) -# 53647 "parsing/parser.ml" +# 53731 "parsing/parser.ml" in -# 3148 "parsing/parser.mly" +# 3155 "parsing/parser.mly" ( Ppat_array _2 ) -# 53652 "parsing/parser.ml" +# 53736 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53656,15 +53740,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53662 "parsing/parser.ml" +# 53746 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53668 "parsing/parser.ml" +# 53752 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53697,24 +53781,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3150 "parsing/parser.mly" +# 3157 "parsing/parser.mly" ( Ppat_array [] ) -# 53703 "parsing/parser.ml" +# 53787 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53712 "parsing/parser.ml" +# 53796 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53718 "parsing/parser.ml" +# 53802 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53755,16 +53839,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3218 "parsing/parser.mly" +# 3225 "parsing/parser.mly" ( ps ) -# 53761 "parsing/parser.ml" +# 53845 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3152 "parsing/parser.mly" +# 3159 "parsing/parser.mly" ( unclosed "[|" _loc__1_ "|]" _loc__3_ ) -# 53768 "parsing/parser.ml" +# 53852 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -53772,15 +53856,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 53778 "parsing/parser.ml" +# 53862 "parsing/parser.ml" in ( -# 3153 "parsing/parser.mly" +# 3160 "parsing/parser.mly" ( _1 ) -# 53784 "parsing/parser.ml" +# 53868 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -53822,9 +53906,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2549 "parsing/parser.mly" +# 2550 "parsing/parser.mly" ( reloc_exp ~loc:_sloc _2 ) -# 53828 "parsing/parser.ml" +# 53912 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -53865,9 +53949,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2551 "parsing/parser.mly" +# 2552 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 53871 "parsing/parser.ml" +# 53955 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -53916,9 +54000,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2553 "parsing/parser.mly" +# 2554 "parsing/parser.mly" ( mkexp_constraint ~loc:_sloc _2 _3 ) -# 53922 "parsing/parser.ml" +# 54006 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -53972,14 +54056,14 @@ module Tables = struct let _v = let _1 = let r = -# 2554 "parsing/parser.mly" +# 2555 "parsing/parser.mly" ( None ) -# 53978 "parsing/parser.ml" +# 54062 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 53983 "parsing/parser.ml" +# 54067 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -53987,9 +54071,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2555 "parsing/parser.mly" +# 2556 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 53993 "parsing/parser.ml" +# 54077 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54043,14 +54127,14 @@ module Tables = struct let _v = let _1 = let r = -# 2554 "parsing/parser.mly" +# 2555 "parsing/parser.mly" ( None ) -# 54049 "parsing/parser.ml" +# 54133 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 54054 "parsing/parser.ml" +# 54138 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54058,9 +54142,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2555 "parsing/parser.mly" +# 2556 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 54064 "parsing/parser.ml" +# 54148 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54114,14 +54198,14 @@ module Tables = struct let _v = let _1 = let r = -# 2554 "parsing/parser.mly" +# 2555 "parsing/parser.mly" ( None ) -# 54120 "parsing/parser.ml" +# 54204 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 54125 "parsing/parser.ml" +# 54209 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54129,9 +54213,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2555 "parsing/parser.mly" +# 2556 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 54135 "parsing/parser.ml" +# 54219 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54180,7 +54264,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54184 "parsing/parser.ml" +# 54268 "parsing/parser.ml" = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -54189,31 +54273,31 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54195 "parsing/parser.ml" +# 54279 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54200 "parsing/parser.ml" +# 54284 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 54206 "parsing/parser.ml" +# 54290 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54211 "parsing/parser.ml" +# 54295 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 54217 "parsing/parser.ml" +# 54301 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54221,9 +54305,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54227 "parsing/parser.ml" +# 54311 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54284,7 +54368,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54288 "parsing/parser.ml" +# 54372 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54295,39 +54379,39 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54301 "parsing/parser.ml" +# 54385 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54306 "parsing/parser.ml" +# 54390 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 54314 "parsing/parser.ml" +# 54398 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54319 "parsing/parser.ml" +# 54403 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54325 "parsing/parser.ml" +# 54409 "parsing/parser.ml" in -# 2440 "parsing/parser.mly" +# 2445 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 54331 "parsing/parser.ml" +# 54415 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54335,9 +54419,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54341 "parsing/parser.ml" +# 54425 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54386,7 +54470,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54390 "parsing/parser.ml" +# 54474 "parsing/parser.ml" = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -54395,31 +54479,31 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54401 "parsing/parser.ml" +# 54485 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54406 "parsing/parser.ml" +# 54490 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 54412 "parsing/parser.ml" +# 54496 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54417 "parsing/parser.ml" +# 54501 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 54423 "parsing/parser.ml" +# 54507 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54427,9 +54511,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54433 "parsing/parser.ml" +# 54517 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54490,7 +54574,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54494 "parsing/parser.ml" +# 54578 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54501,39 +54585,39 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54507 "parsing/parser.ml" +# 54591 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54512 "parsing/parser.ml" +# 54596 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 54520 "parsing/parser.ml" +# 54604 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54525 "parsing/parser.ml" +# 54609 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54531 "parsing/parser.ml" +# 54615 "parsing/parser.ml" in -# 2442 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 54537 "parsing/parser.ml" +# 54621 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54541,9 +54625,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54547 "parsing/parser.ml" +# 54631 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54592,7 +54676,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54596 "parsing/parser.ml" +# 54680 "parsing/parser.ml" = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -54601,31 +54685,31 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54607 "parsing/parser.ml" +# 54691 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54612 "parsing/parser.ml" +# 54696 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 54618 "parsing/parser.ml" +# 54702 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54623 "parsing/parser.ml" +# 54707 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 54629 "parsing/parser.ml" +# 54713 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54633,9 +54717,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54639 "parsing/parser.ml" +# 54723 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54696,7 +54780,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54700 "parsing/parser.ml" +# 54784 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54707,39 +54791,39 @@ module Tables = struct let _v = let _1 = let r = -# 2556 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( None ) -# 54713 "parsing/parser.ml" +# 54797 "parsing/parser.ml" in let i = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 54718 "parsing/parser.ml" +# 54802 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 54726 "parsing/parser.ml" +# 54810 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54731 "parsing/parser.ml" +# 54815 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 54737 "parsing/parser.ml" +# 54821 "parsing/parser.ml" in -# 2444 "parsing/parser.mly" +# 2449 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 54743 "parsing/parser.ml" +# 54827 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -54747,9 +54831,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2557 "parsing/parser.mly" +# 2558 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 54753 "parsing/parser.ml" +# 54837 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54805,15 +54889,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2449 "parsing/parser.mly" +# 2454 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 54811 "parsing/parser.ml" +# 54895 "parsing/parser.ml" in ( -# 2558 "parsing/parser.mly" +# 2559 "parsing/parser.mly" ( _1 ) -# 54817 "parsing/parser.ml" +# 54901 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54869,15 +54953,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2451 "parsing/parser.mly" +# 2456 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 54875 "parsing/parser.ml" +# 54959 "parsing/parser.ml" in ( -# 2558 "parsing/parser.mly" +# 2559 "parsing/parser.mly" ( _1 ) -# 54881 "parsing/parser.ml" +# 54965 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54933,15 +55017,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2453 "parsing/parser.mly" +# 2458 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 54939 "parsing/parser.ml" +# 55023 "parsing/parser.ml" in ( -# 2558 "parsing/parser.mly" +# 2559 "parsing/parser.mly" ( _1 ) -# 54945 "parsing/parser.ml" +# 55029 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54990,7 +55074,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 54994 "parsing/parser.ml" +# 55078 "parsing/parser.ml" = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -54999,34 +55083,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55005 "parsing/parser.ml" +# 55089 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 55011 "parsing/parser.ml" +# 55095 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55016 "parsing/parser.ml" +# 55100 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2449 "parsing/parser.mly" +# 2454 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 55024 "parsing/parser.ml" +# 55108 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55030 "parsing/parser.ml" +# 55114 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55087,7 +55171,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 55091 "parsing/parser.ml" +# 55175 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -55098,42 +55182,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55104 "parsing/parser.ml" +# 55188 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 55112 "parsing/parser.ml" +# 55196 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55117 "parsing/parser.ml" +# 55201 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55123 "parsing/parser.ml" +# 55207 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2449 "parsing/parser.mly" +# 2454 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 55131 "parsing/parser.ml" +# 55215 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55137 "parsing/parser.ml" +# 55221 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55182,7 +55266,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 55186 "parsing/parser.ml" +# 55270 "parsing/parser.ml" = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -55191,34 +55275,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55197 "parsing/parser.ml" +# 55281 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 55203 "parsing/parser.ml" +# 55287 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55208 "parsing/parser.ml" +# 55292 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2451 "parsing/parser.mly" +# 2456 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 55216 "parsing/parser.ml" +# 55300 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55222 "parsing/parser.ml" +# 55306 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55279,7 +55363,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 55283 "parsing/parser.ml" +# 55367 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -55290,42 +55374,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55296 "parsing/parser.ml" +# 55380 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 55304 "parsing/parser.ml" +# 55388 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55309 "parsing/parser.ml" +# 55393 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55315 "parsing/parser.ml" +# 55399 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2451 "parsing/parser.mly" +# 2456 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 55323 "parsing/parser.ml" +# 55407 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55329 "parsing/parser.ml" +# 55413 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55374,7 +55458,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 55378 "parsing/parser.ml" +# 55462 "parsing/parser.ml" = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -55383,34 +55467,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55389 "parsing/parser.ml" +# 55473 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 55395 "parsing/parser.ml" +# 55479 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55400 "parsing/parser.ml" +# 55484 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2453 "parsing/parser.mly" +# 2458 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 55408 "parsing/parser.ml" +# 55492 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55414 "parsing/parser.ml" +# 55498 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55471,7 +55555,7 @@ module Tables = struct let _2 : # 806 "parsing/parser.mly" (string) -# 55475 "parsing/parser.ml" +# 55559 "parsing/parser.ml" = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -55482,42 +55566,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 55488 "parsing/parser.ml" +# 55572 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" (_2) -# 55496 "parsing/parser.ml" +# 55580 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55501 "parsing/parser.ml" +# 55585 "parsing/parser.ml" in -# 2456 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( _1, _2 ) -# 55507 "parsing/parser.ml" +# 55591 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2453 "parsing/parser.mly" +# 2458 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 55515 "parsing/parser.ml" +# 55599 "parsing/parser.ml" in ( -# 2559 "parsing/parser.mly" +# 2560 "parsing/parser.mly" ( _1 ) -# 55521 "parsing/parser.ml" +# 55605 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55553,15 +55637,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2599 "parsing/parser.mly" +# 2600 "parsing/parser.mly" ( mkexp ~loc:_sloc (pexp_extension ~id:(mknoloc "metaocaml.escape") e) ) -# 55559 "parsing/parser.ml" +# 55643 "parsing/parser.ml" in ( -# 2560 "parsing/parser.mly" +# 2561 "parsing/parser.mly" ( _1 ) -# 55565 "parsing/parser.ml" +# 55649 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55604,15 +55688,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2601 "parsing/parser.mly" +# 2602 "parsing/parser.mly" ( mkexp ~loc:_sloc (pexp_extension ~id:(mknoloc "metaocaml.bracket") e) ) -# 55610 "parsing/parser.ml" +# 55694 "parsing/parser.ml" in ( -# 2560 "parsing/parser.mly" +# 2561 "parsing/parser.mly" ( _1 ) -# 55616 "parsing/parser.ml" +# 55700 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55668,15 +55752,15 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 55674 "parsing/parser.ml" +# 55758 "parsing/parser.ml" in -# 2569 "parsing/parser.mly" +# 2570 "parsing/parser.mly" ( e.pexp_desc, (ext, attrs @ e.pexp_attributes) ) -# 55680 "parsing/parser.ml" +# 55764 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -55684,10 +55768,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 55691 "parsing/parser.ml" +# 55775 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55738,24 +55822,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 55744 "parsing/parser.ml" +# 55828 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 55750 "parsing/parser.ml" +# 55834 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2571 "parsing/parser.mly" +# 2572 "parsing/parser.mly" ( Pexp_construct (mkloc (Lident "()") (make_loc _sloc), None), _2 ) -# 55759 "parsing/parser.ml" +# 55843 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -55763,10 +55847,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 55770 "parsing/parser.ml" +# 55854 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55824,23 +55908,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 55830 "parsing/parser.ml" +# 55914 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 55836 "parsing/parser.ml" +# 55920 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2573 "parsing/parser.mly" +# 2574 "parsing/parser.mly" ( unclosed "begin" _loc__1_ "end" _loc__4_ ) -# 55844 "parsing/parser.ml" +# 55928 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -55848,10 +55932,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 55855 "parsing/parser.ml" +# 55939 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -55903,9 +55987,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55909 "parsing/parser.ml" +# 55993 "parsing/parser.ml" in let _2 = @@ -55913,21 +55997,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 55919 "parsing/parser.ml" +# 56003 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 55925 "parsing/parser.ml" +# 56009 "parsing/parser.ml" in -# 2575 "parsing/parser.mly" +# 2576 "parsing/parser.mly" ( Pexp_new(_3), _2 ) -# 55931 "parsing/parser.ml" +# 56015 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -55935,10 +56019,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 55942 "parsing/parser.ml" +# 56026 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56003,21 +56087,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 56009 "parsing/parser.ml" +# 56093 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 56015 "parsing/parser.ml" +# 56099 "parsing/parser.ml" in -# 2577 "parsing/parser.mly" +# 2578 "parsing/parser.mly" ( Pexp_pack (_4, None), _3 ) -# 56021 "parsing/parser.ml" +# 56105 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -56025,10 +56109,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 56032 "parsing/parser.ml" +# 56116 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56108,10 +56192,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 56115 "parsing/parser.ml" +# 56199 "parsing/parser.ml" in let _3 = @@ -56119,21 +56203,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 56125 "parsing/parser.ml" +# 56209 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 56131 "parsing/parser.ml" +# 56215 "parsing/parser.ml" in -# 2579 "parsing/parser.mly" +# 2580 "parsing/parser.mly" ( Pexp_pack (_4, Some _6), _3 ) -# 56137 "parsing/parser.ml" +# 56221 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -56141,10 +56225,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 56148 "parsing/parser.ml" +# 56232 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56216,23 +56300,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 56222 "parsing/parser.ml" +# 56306 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 56228 "parsing/parser.ml" +# 56312 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2581 "parsing/parser.mly" +# 2582 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 56236 "parsing/parser.ml" +# 56320 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -56240,10 +56324,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 56247 "parsing/parser.ml" +# 56331 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56310,27 +56394,27 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 56314 "parsing/parser.ml" +# 56398 "parsing/parser.ml" in -# 2084 "parsing/parser.mly" +# 2089 "parsing/parser.mly" ( _1 ) -# 56319 "parsing/parser.ml" +# 56403 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1006 "parsing/parser.mly" +# 1008 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 56328 "parsing/parser.ml" +# 56412 "parsing/parser.ml" in -# 2071 "parsing/parser.mly" +# 2076 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 56334 "parsing/parser.ml" +# 56418 "parsing/parser.ml" in let _2 = @@ -56338,21 +56422,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 56344 "parsing/parser.ml" +# 56428 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 56350 "parsing/parser.ml" +# 56434 "parsing/parser.ml" in -# 2583 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( Pexp_object _3, _2 ) -# 56356 "parsing/parser.ml" +# 56440 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -56360,10 +56444,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 56367 "parsing/parser.ml" +# 56451 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56430,27 +56514,27 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 56434 "parsing/parser.ml" +# 56518 "parsing/parser.ml" in -# 2084 "parsing/parser.mly" +# 2089 "parsing/parser.mly" ( _1 ) -# 56439 "parsing/parser.ml" +# 56523 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1006 "parsing/parser.mly" +# 1008 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 56448 "parsing/parser.ml" +# 56532 "parsing/parser.ml" in -# 2071 "parsing/parser.mly" +# 2076 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 56454 "parsing/parser.ml" +# 56538 "parsing/parser.ml" in let _2 = @@ -56458,23 +56542,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 56464 "parsing/parser.ml" +# 56548 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 56470 "parsing/parser.ml" +# 56554 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2585 "parsing/parser.mly" +# 2586 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 56478 "parsing/parser.ml" +# 56562 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -56482,10 +56566,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2562 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 56489 "parsing/parser.ml" +# 56573 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56516,30 +56600,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56522 "parsing/parser.ml" +# 56606 "parsing/parser.ml" in -# 2606 "parsing/parser.mly" +# 2607 "parsing/parser.mly" ( Pexp_ident (_1) ) -# 56528 "parsing/parser.ml" +# 56612 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56537 "parsing/parser.ml" +# 56621 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56543 "parsing/parser.ml" +# 56627 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56565,23 +56649,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2608 "parsing/parser.mly" +# 2609 "parsing/parser.mly" ( Pexp_constant _1 ) -# 56571 "parsing/parser.ml" +# 56655 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56579 "parsing/parser.ml" +# 56663 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56585 "parsing/parser.ml" +# 56669 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56612,30 +56696,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56618 "parsing/parser.ml" +# 56702 "parsing/parser.ml" in -# 2610 "parsing/parser.mly" +# 2611 "parsing/parser.mly" ( Pexp_construct(_1, None) ) -# 56624 "parsing/parser.ml" +# 56708 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56633 "parsing/parser.ml" +# 56717 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56639 "parsing/parser.ml" +# 56723 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56661,23 +56745,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2612 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Pexp_variant(_1, None) ) -# 56667 "parsing/parser.ml" +# 56751 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56675 "parsing/parser.ml" +# 56759 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56681 "parsing/parser.ml" +# 56765 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56706,7 +56790,7 @@ module Tables = struct let _1 : # 849 "parsing/parser.mly" (string) -# 56710 "parsing/parser.ml" +# 56794 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -56719,15 +56803,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 56725 "parsing/parser.ml" +# 56809 "parsing/parser.ml" in -# 2614 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 56731 "parsing/parser.ml" +# 56815 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -56735,15 +56819,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56741 "parsing/parser.ml" +# 56825 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56747 "parsing/parser.ml" +# 56831 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56778,23 +56862,23 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2615 "parsing/parser.mly" +# 2616 "parsing/parser.mly" ("!") -# 56784 "parsing/parser.ml" +# 56868 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 56792 "parsing/parser.ml" +# 56876 "parsing/parser.ml" in -# 2616 "parsing/parser.mly" +# 2617 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 56798 "parsing/parser.ml" +# 56882 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -56802,15 +56886,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56808 "parsing/parser.ml" +# 56892 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56814 "parsing/parser.ml" +# 56898 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56851,14 +56935,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2974 "parsing/parser.mly" +# 2981 "parsing/parser.mly" ( xs ) -# 56857 "parsing/parser.ml" +# 56941 "parsing/parser.ml" in -# 2618 "parsing/parser.mly" +# 2619 "parsing/parser.mly" ( Pexp_override _2 ) -# 56862 "parsing/parser.ml" +# 56946 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -56866,15 +56950,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56872 "parsing/parser.ml" +# 56956 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56878 "parsing/parser.ml" +# 56962 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56915,16 +56999,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2974 "parsing/parser.mly" +# 2981 "parsing/parser.mly" ( xs ) -# 56921 "parsing/parser.ml" +# 57005 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2620 "parsing/parser.mly" +# 2621 "parsing/parser.mly" ( unclosed "{<" _loc__1_ ">}" _loc__3_ ) -# 56928 "parsing/parser.ml" +# 57012 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -56932,15 +57016,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56938 "parsing/parser.ml" +# 57022 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56944 "parsing/parser.ml" +# 57028 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -56973,24 +57057,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2622 "parsing/parser.mly" +# 2623 "parsing/parser.mly" ( Pexp_override [] ) -# 56979 "parsing/parser.ml" +# 57063 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 56988 "parsing/parser.ml" +# 57072 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 56994 "parsing/parser.ml" +# 57078 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57036,15 +57120,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57042 "parsing/parser.ml" +# 57126 "parsing/parser.ml" in -# 2624 "parsing/parser.mly" +# 2625 "parsing/parser.mly" ( Pexp_field(_1, _3) ) -# 57048 "parsing/parser.ml" +# 57132 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -57052,15 +57136,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57058 "parsing/parser.ml" +# 57142 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57064 "parsing/parser.ml" +# 57148 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57120,24 +57204,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57126 "parsing/parser.ml" +# 57210 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 57135 "parsing/parser.ml" +# 57219 "parsing/parser.ml" in -# 2626 "parsing/parser.mly" +# 2627 "parsing/parser.mly" ( Pexp_struct_item(Str.open_ od, _4) ) -# 57141 "parsing/parser.ml" +# 57225 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57145,15 +57229,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57151 "parsing/parser.ml" +# 57235 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57157 "parsing/parser.ml" +# 57241 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57208,9 +57292,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2974 "parsing/parser.mly" +# 2981 "parsing/parser.mly" ( xs ) -# 57214 "parsing/parser.ml" +# 57298 "parsing/parser.ml" in let od = let _1 = @@ -57218,18 +57302,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57224 "parsing/parser.ml" +# 57308 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 57233 "parsing/parser.ml" +# 57317 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -57237,10 +57321,10 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2628 "parsing/parser.mly" +# 2629 "parsing/parser.mly" ( (* TODO: review the location of Pexp_override *) Pexp_struct_item(Str.open_ od, mkexp ~loc:_sloc (Pexp_override _4)) ) -# 57244 "parsing/parser.ml" +# 57328 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57248,15 +57332,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57254 "parsing/parser.ml" +# 57338 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57260 "parsing/parser.ml" +# 57344 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57311,16 +57395,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2974 "parsing/parser.mly" +# 2981 "parsing/parser.mly" ( xs ) -# 57317 "parsing/parser.ml" +# 57401 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2631 "parsing/parser.mly" +# 2632 "parsing/parser.mly" ( unclosed "{<" _loc__3_ ">}" _loc__5_ ) -# 57324 "parsing/parser.ml" +# 57408 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57328,15 +57412,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57334 "parsing/parser.ml" +# 57418 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57340 "parsing/parser.ml" +# 57424 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57370,7 +57454,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 57374 "parsing/parser.ml" +# 57458 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -57383,23 +57467,23 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 57389 "parsing/parser.ml" +# 57473 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57397 "parsing/parser.ml" +# 57481 "parsing/parser.ml" in -# 2633 "parsing/parser.mly" +# 2634 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 57403 "parsing/parser.ml" +# 57487 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -57407,15 +57491,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57413 "parsing/parser.ml" +# 57497 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57419 "parsing/parser.ml" +# 57503 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57450,7 +57534,7 @@ module Tables = struct let _1_inlined1 : # 860 "parsing/parser.mly" (string) -# 57454 "parsing/parser.ml" +# 57538 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -57465,15 +57549,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "parsing/parser.mly" +# 1041 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 57471 "parsing/parser.ml" +# 57555 "parsing/parser.ml" in -# 2635 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( mkinfix _1 _2 _3 ) -# 57477 "parsing/parser.ml" +# 57561 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -57481,15 +57565,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57487 "parsing/parser.ml" +# 57571 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57493 "parsing/parser.ml" +# 57577 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57515,23 +57599,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2637 "parsing/parser.mly" +# 2638 "parsing/parser.mly" ( Pexp_extension _1 ) -# 57521 "parsing/parser.ml" +# 57605 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57529 "parsing/parser.ml" +# 57613 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57535 "parsing/parser.ml" +# 57619 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57581,18 +57665,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2638 "parsing/parser.mly" +# 2639 "parsing/parser.mly" (Lident "()") -# 57587 "parsing/parser.ml" +# 57671 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57596 "parsing/parser.ml" +# 57680 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -57602,26 +57686,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57608 "parsing/parser.ml" +# 57692 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 57617 "parsing/parser.ml" +# 57701 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2639 "parsing/parser.mly" +# 2640 "parsing/parser.mly" ( Pexp_struct_item(Str.open_ od, mkexp ~loc:(_loc__3_) (Pexp_construct(_3, None))) ) -# 57625 "parsing/parser.ml" +# 57709 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -57629,15 +57713,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57635 "parsing/parser.ml" +# 57719 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57641 "parsing/parser.ml" +# 57725 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57694,9 +57778,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2642 "parsing/parser.mly" +# 2643 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 57700 "parsing/parser.ml" +# 57784 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57704,15 +57788,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57710 "parsing/parser.ml" +# 57794 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57716 "parsing/parser.ml" +# 57800 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57753,25 +57837,25 @@ module Tables = struct let _v = let _1 = let _1 = -# 2644 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( let (exten, fields) = _2 in Pexp_record(fields, exten) ) -# 57760 "parsing/parser.ml" +# 57844 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57769 "parsing/parser.ml" +# 57853 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57775 "parsing/parser.ml" +# 57859 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57815,9 +57899,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2647 "parsing/parser.mly" +# 2648 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 57821 "parsing/parser.ml" +# 57905 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -57825,15 +57909,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57831 "parsing/parser.ml" +# 57915 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57837 "parsing/parser.ml" +# 57921 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57894,28 +57978,28 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57900 "parsing/parser.ml" +# 57984 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 57909 "parsing/parser.ml" +# 57993 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2649 "parsing/parser.mly" +# 2650 "parsing/parser.mly" ( let (exten, fields) = _4 in Pexp_struct_item(Str.open_ od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_record(fields, exten))) ) -# 57919 "parsing/parser.ml" +# 58003 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57923,15 +58007,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 57929 "parsing/parser.ml" +# 58013 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 57935 "parsing/parser.ml" +# 58019 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -57989,9 +58073,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2654 "parsing/parser.mly" +# 2655 "parsing/parser.mly" ( unclosed "{" _loc__3_ "}" _loc__5_ ) -# 57995 "parsing/parser.ml" +# 58079 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -57999,15 +58083,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58005 "parsing/parser.ml" +# 58089 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58011 "parsing/parser.ml" +# 58095 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58048,14 +58132,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58054 "parsing/parser.ml" +# 58138 "parsing/parser.ml" in -# 2656 "parsing/parser.mly" +# 2657 "parsing/parser.mly" ( Pexp_array(_2) ) -# 58059 "parsing/parser.ml" +# 58143 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -58063,15 +58147,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58069 "parsing/parser.ml" +# 58153 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58075 "parsing/parser.ml" +# 58159 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58112,16 +58196,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58118 "parsing/parser.ml" +# 58202 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2658 "parsing/parser.mly" +# 2659 "parsing/parser.mly" ( unclosed "[|" _loc__1_ "|]" _loc__3_ ) -# 58125 "parsing/parser.ml" +# 58209 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -58129,15 +58213,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58135 "parsing/parser.ml" +# 58219 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58141 "parsing/parser.ml" +# 58225 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58170,24 +58254,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2660 "parsing/parser.mly" +# 2661 "parsing/parser.mly" ( Pexp_array [] ) -# 58176 "parsing/parser.ml" +# 58260 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58185 "parsing/parser.ml" +# 58269 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58191 "parsing/parser.ml" +# 58275 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58242,9 +58326,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58248 "parsing/parser.ml" +# 58332 "parsing/parser.ml" in let od = let _1 = @@ -58252,26 +58336,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58258 "parsing/parser.ml" +# 58342 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 58267 "parsing/parser.ml" +# 58351 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2662 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( Pexp_struct_item(Str.open_ od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array(_4))) ) -# 58275 "parsing/parser.ml" +# 58359 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -58279,15 +58363,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58285 "parsing/parser.ml" +# 58369 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58291 "parsing/parser.ml" +# 58375 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58340,27 +58424,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58346 "parsing/parser.ml" +# 58430 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 58355 "parsing/parser.ml" +# 58439 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2665 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Pexp_struct_item(Str.open_ od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array [])) ) -# 58364 "parsing/parser.ml" +# 58448 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -58368,15 +58452,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58374 "parsing/parser.ml" +# 58458 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58380 "parsing/parser.ml" +# 58464 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58431,16 +58515,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58437 "parsing/parser.ml" +# 58521 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2670 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( unclosed "[|" _loc__3_ "|]" _loc__5_ ) -# 58444 "parsing/parser.ml" +# 58528 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -58448,15 +58532,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58454 "parsing/parser.ml" +# 58538 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58460 "parsing/parser.ml" +# 58544 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58497,15 +58581,15 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58503 "parsing/parser.ml" +# 58587 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2672 "parsing/parser.mly" +# 2673 "parsing/parser.mly" ( fst (mktailexp _loc__3_ _2) ) -# 58509 "parsing/parser.ml" +# 58593 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -58513,15 +58597,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58519 "parsing/parser.ml" +# 58603 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58525 "parsing/parser.ml" +# 58609 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58562,16 +58646,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58568 "parsing/parser.ml" +# 58652 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2674 "parsing/parser.mly" +# 2675 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 58575 "parsing/parser.ml" +# 58659 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -58579,15 +58663,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58585 "parsing/parser.ml" +# 58669 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58591 "parsing/parser.ml" +# 58675 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58642,9 +58726,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58648 "parsing/parser.ml" +# 58732 "parsing/parser.ml" in let od = let _1 = @@ -58652,30 +58736,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58658 "parsing/parser.ml" +# 58742 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 58667 "parsing/parser.ml" +# 58751 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _loc__5_ = (_startpos__5_, _endpos__5_) in -# 2676 "parsing/parser.mly" +# 2677 "parsing/parser.mly" ( let list_exp = (* TODO: review the location of list_exp *) let tail_exp, _tail_loc = mktailexp _loc__5_ _4 in mkexp ~loc:(_startpos__3_, _endpos) tail_exp in Pexp_struct_item(Str.open_ od, list_exp) ) -# 58679 "parsing/parser.ml" +# 58763 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -58683,15 +58767,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58689 "parsing/parser.ml" +# 58773 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58695 "parsing/parser.ml" +# 58779 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58741,18 +58825,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2681 "parsing/parser.mly" +# 2682 "parsing/parser.mly" (Lident "[]") -# 58747 "parsing/parser.ml" +# 58831 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58756 "parsing/parser.ml" +# 58840 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -58762,26 +58846,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58768 "parsing/parser.ml" +# 58852 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 58777 "parsing/parser.ml" +# 58861 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2682 "parsing/parser.mly" +# 2683 "parsing/parser.mly" ( Pexp_struct_item(Str.open_ od, mkexp ~loc:_loc__3_ (Pexp_construct(_3, None))) ) -# 58785 "parsing/parser.ml" +# 58869 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -58789,15 +58873,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58795 "parsing/parser.ml" +# 58879 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58801 "parsing/parser.ml" +# 58885 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58852,16 +58936,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2991 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( es ) -# 58858 "parsing/parser.ml" +# 58942 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2686 "parsing/parser.mly" +# 2687 "parsing/parser.mly" ( unclosed "[" _loc__3_ "]" _loc__5_ ) -# 58865 "parsing/parser.ml" +# 58949 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -58869,15 +58953,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 58875 "parsing/parser.ml" +# 58959 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 58881 "parsing/parser.ml" +# 58965 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -58972,10 +59056,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 58979 "parsing/parser.ml" +# 59063 "parsing/parser.ml" in let _5 = @@ -58983,15 +59067,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 58989 "parsing/parser.ml" +# 59073 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 58995 "parsing/parser.ml" +# 59079 "parsing/parser.ml" in let od = @@ -59000,28 +59084,28 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59006 "parsing/parser.ml" +# 59090 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1736 "parsing/parser.mly" +# 1741 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 59015 "parsing/parser.ml" +# 59099 "parsing/parser.ml" in let _endpos = _endpos__9_ in -# 2689 "parsing/parser.mly" +# 2690 "parsing/parser.mly" ( let modexp = mkexp_attrs ~loc:(_startpos__3_, _endpos) (Pexp_pack (_6, Some ptyp)) _5 in Pexp_struct_item(Str.open_ od, modexp) ) -# 59025 "parsing/parser.ml" +# 59109 "parsing/parser.ml" in let _endpos__1_ = _endpos__9_ in @@ -59029,15 +59113,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 59035 "parsing/parser.ml" +# 59119 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 59041 "parsing/parser.ml" +# 59125 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -59124,23 +59208,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 59130 "parsing/parser.ml" +# 59214 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 59136 "parsing/parser.ml" +# 59220 "parsing/parser.ml" in let _loc__8_ = (_startpos__8_, _endpos__8_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2695 "parsing/parser.mly" +# 2696 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__8_ ) -# 59144 "parsing/parser.ml" +# 59228 "parsing/parser.ml" in let _endpos__1_ = _endpos__8_ in @@ -59148,15 +59232,57 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1047 "parsing/parser.mly" + ( mkexp ~loc:_sloc _1 ) +# 59238 "parsing/parser.ml" + + in + ( +# 2566 "parsing/parser.mly" + ( _1 ) +# 59244 "parsing/parser.ml" + : (Parsetree.expression)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = +# 2698 "parsing/parser.mly" + ( Pexp_hole ) +# 59272 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1047 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 59154 "parsing/parser.ml" +# 59280 "parsing/parser.ml" in ( -# 2565 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 59160 "parsing/parser.ml" +# 59286 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -59211,15 +59337,15 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 2408 "parsing/parser.mly" +# 2413 "parsing/parser.mly" ( _1 ) -# 59217 "parsing/parser.ml" +# 59343 "parsing/parser.ml" in ( -# 2378 "parsing/parser.mly" +# 2383 "parsing/parser.mly" ( (Optional (fst _3), _4, snd _3) ) -# 59223 "parsing/parser.ml" +# 59349 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59247,7 +59373,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 59251 "parsing/parser.ml" +# 59377 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -59261,24 +59387,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59267 "parsing/parser.ml" +# 59393 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 59276 "parsing/parser.ml" +# 59402 "parsing/parser.ml" in ( -# 2380 "parsing/parser.mly" +# 2385 "parsing/parser.mly" ( (Optional (fst _2), None, snd _2) ) -# 59282 "parsing/parser.ml" +# 59408 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59328,7 +59454,7 @@ module Tables = struct let _1 : # 842 "parsing/parser.mly" (string) -# 59332 "parsing/parser.ml" +# 59458 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -59337,15 +59463,15 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 2408 "parsing/parser.mly" +# 2413 "parsing/parser.mly" ( _1 ) -# 59343 "parsing/parser.ml" +# 59469 "parsing/parser.ml" in ( -# 2382 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( (Optional _1, _4, _3) ) -# 59349 "parsing/parser.ml" +# 59475 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59374,15 +59500,15 @@ module Tables = struct let _1 : # 842 "parsing/parser.mly" (string) -# 59378 "parsing/parser.ml" +# 59504 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2384 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( (Optional _1, None, _2) ) -# 59386 "parsing/parser.ml" +# 59512 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59426,9 +59552,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2386 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( (Labelled (fst _3), None, snd _3) ) -# 59432 "parsing/parser.ml" +# 59558 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59455,7 +59581,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 59459 "parsing/parser.ml" +# 59585 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -59469,24 +59595,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59475 "parsing/parser.ml" +# 59601 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 59484 "parsing/parser.ml" +# 59610 "parsing/parser.ml" in ( -# 2388 "parsing/parser.mly" +# 2393 "parsing/parser.mly" ( (Labelled (fst _2), None, snd _2) ) -# 59490 "parsing/parser.ml" +# 59616 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59515,15 +59641,15 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 59519 "parsing/parser.ml" +# 59645 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2390 "parsing/parser.mly" +# 2395 "parsing/parser.mly" ( (Labelled _1, None, _2) ) -# 59527 "parsing/parser.ml" +# 59653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59546,9 +59672,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2392 "parsing/parser.mly" +# 2397 "parsing/parser.mly" ( (Nolabel, None, _1) ) -# 59552 "parsing/parser.ml" +# 59678 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59618,7 +59744,7 @@ module Tables = struct let _1 : # 812 "parsing/parser.mly" (string) -# 59622 "parsing/parser.ml" +# 59748 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -59635,24 +59761,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 59639 "parsing/parser.ml" +# 59765 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 59644 "parsing/parser.ml" +# 59770 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 59650 "parsing/parser.ml" +# 59776 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 59656 "parsing/parser.ml" +# 59782 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -59660,21 +59786,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 59666 "parsing/parser.ml" +# 59792 "parsing/parser.ml" in -# 3683 "parsing/parser.mly" +# 3692 "parsing/parser.mly" ( _1 ) -# 59672 "parsing/parser.ml" +# 59798 "parsing/parser.ml" in -# 2434 "parsing/parser.mly" +# 2439 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 59678 "parsing/parser.ml" +# 59804 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_pat_) in @@ -59682,21 +59808,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 59688 "parsing/parser.ml" +# 59814 "parsing/parser.ml" in -# 2435 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 59694 "parsing/parser.ml" +# 59820 "parsing/parser.ml" in ( -# 2394 "parsing/parser.mly" +# 2399 "parsing/parser.mly" ( (Labelled _1, None, _3) ) -# 59700 "parsing/parser.ml" +# 59826 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59774,24 +59900,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 59778 "parsing/parser.ml" +# 59904 "parsing/parser.ml" in -# 1110 "parsing/parser.mly" +# 1112 "parsing/parser.mly" ( xs ) -# 59783 "parsing/parser.ml" +# 59909 "parsing/parser.ml" in -# 3669 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( _1 ) -# 59789 "parsing/parser.ml" +# 59915 "parsing/parser.ml" in -# 3673 "parsing/parser.mly" +# 3682 "parsing/parser.mly" ( Ptyp_poly(_1, _3) ) -# 59795 "parsing/parser.ml" +# 59921 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -59799,21 +59925,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 59805 "parsing/parser.ml" +# 59931 "parsing/parser.ml" in -# 3683 "parsing/parser.mly" +# 3692 "parsing/parser.mly" ( _1 ) -# 59811 "parsing/parser.ml" +# 59937 "parsing/parser.ml" in -# 2434 "parsing/parser.mly" +# 2439 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 59817 "parsing/parser.ml" +# 59943 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_pat_) in @@ -59821,21 +59947,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 59827 "parsing/parser.ml" +# 59953 "parsing/parser.ml" in -# 2435 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 59833 "parsing/parser.ml" +# 59959 "parsing/parser.ml" in ( -# 2396 "parsing/parser.mly" +# 2401 "parsing/parser.mly" ( (Nolabel, None, _2) ) -# 59839 "parsing/parser.ml" +# 59965 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -59866,30 +59992,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59872 "parsing/parser.ml" +# 59998 "parsing/parser.ml" in -# 3078 "parsing/parser.mly" +# 3085 "parsing/parser.mly" ( Ppat_var (_1) ) -# 59878 "parsing/parser.ml" +# 60004 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 59887 "parsing/parser.ml" +# 60013 "parsing/parser.ml" in ( -# 3079 "parsing/parser.mly" +# 3086 "parsing/parser.mly" ( _1 ) -# 59893 "parsing/parser.ml" +# 60019 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -59913,9 +60039,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3080 "parsing/parser.mly" +# 3087 "parsing/parser.mly" ( _1 ) -# 59919 "parsing/parser.ml" +# 60045 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59956,9 +60082,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3085 "parsing/parser.mly" +# 3092 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 59962 "parsing/parser.ml" +# 60088 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -59982,9 +60108,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3087 "parsing/parser.mly" +# 3094 "parsing/parser.mly" ( _1 ) -# 59988 "parsing/parser.ml" +# 60114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -60048,9 +60174,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60054 "parsing/parser.ml" +# 60180 "parsing/parser.ml" in let ext_attrs = @@ -60058,24 +60184,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 60064 "parsing/parser.ml" +# 60190 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 60070 "parsing/parser.ml" +# 60196 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3089 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack (name, None)) ext_attrs ) -# 60079 "parsing/parser.ml" +# 60205 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60154,10 +60280,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 60161 "parsing/parser.ml" +# 60287 "parsing/parser.ml" in let name = @@ -60166,9 +60292,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60172 "parsing/parser.ml" +# 60298 "parsing/parser.ml" in let ext_attrs = @@ -60176,24 +60302,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 60182 "parsing/parser.ml" +# 60308 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 60188 "parsing/parser.ml" +# 60314 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3092 "parsing/parser.mly" +# 3099 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack (name, Some ptyp)) ext_attrs ) -# 60197 "parsing/parser.ml" +# 60323 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60219,23 +60345,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3098 "parsing/parser.mly" +# 3105 "parsing/parser.mly" ( Ppat_any ) -# 60225 "parsing/parser.ml" +# 60351 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60233 "parsing/parser.ml" +# 60359 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60239 "parsing/parser.ml" +# 60365 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60261,23 +60387,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3100 "parsing/parser.mly" +# 3107 "parsing/parser.mly" ( Ppat_constant _1 ) -# 60267 "parsing/parser.ml" +# 60393 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60275 "parsing/parser.ml" +# 60401 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60281 "parsing/parser.ml" +# 60407 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60317,24 +60443,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3102 "parsing/parser.mly" +# 3109 "parsing/parser.mly" ( Ppat_interval (_1, _3) ) -# 60323 "parsing/parser.ml" +# 60449 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60332 "parsing/parser.ml" +# 60458 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60338 "parsing/parser.ml" +# 60464 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60365,30 +60491,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60371 "parsing/parser.ml" +# 60497 "parsing/parser.ml" in -# 3104 "parsing/parser.mly" +# 3111 "parsing/parser.mly" ( Ppat_construct(_1, None) ) -# 60377 "parsing/parser.ml" +# 60503 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60386 "parsing/parser.ml" +# 60512 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60392 "parsing/parser.ml" +# 60518 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60414,23 +60540,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3106 "parsing/parser.mly" +# 3113 "parsing/parser.mly" ( Ppat_variant(_1, None) ) -# 60420 "parsing/parser.ml" +# 60546 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60428 "parsing/parser.ml" +# 60554 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60434 "parsing/parser.ml" +# 60560 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60469,15 +60595,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60475 "parsing/parser.ml" +# 60601 "parsing/parser.ml" in -# 3108 "parsing/parser.mly" +# 3115 "parsing/parser.mly" ( Ppat_type (_2) ) -# 60481 "parsing/parser.ml" +# 60607 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -60485,15 +60611,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60491 "parsing/parser.ml" +# 60617 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60497 "parsing/parser.ml" +# 60623 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60538,15 +60664,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60544 "parsing/parser.ml" +# 60670 "parsing/parser.ml" in -# 3110 "parsing/parser.mly" +# 3117 "parsing/parser.mly" ( Ppat_open(_1, _3) ) -# 60550 "parsing/parser.ml" +# 60676 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -60554,15 +60680,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60560 "parsing/parser.ml" +# 60686 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60566 "parsing/parser.ml" +# 60692 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60612,18 +60738,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3111 "parsing/parser.mly" +# 3118 "parsing/parser.mly" (Lident "[]") -# 60618 "parsing/parser.ml" +# 60744 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60627 "parsing/parser.ml" +# 60753 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -60632,18 +60758,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60638 "parsing/parser.ml" +# 60764 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3112 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 60647 "parsing/parser.ml" +# 60773 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -60651,15 +60777,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60657 "parsing/parser.ml" +# 60783 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60663 "parsing/parser.ml" +# 60789 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60709,18 +60835,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3113 "parsing/parser.mly" +# 3120 "parsing/parser.mly" (Lident "()") -# 60715 "parsing/parser.ml" +# 60841 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60724 "parsing/parser.ml" +# 60850 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -60729,18 +60855,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60735 "parsing/parser.ml" +# 60861 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3114 "parsing/parser.mly" +# 3121 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 60744 "parsing/parser.ml" +# 60870 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -60748,15 +60874,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60754 "parsing/parser.ml" +# 60880 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60760 "parsing/parser.ml" +# 60886 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60815,15 +60941,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 60821 "parsing/parser.ml" +# 60947 "parsing/parser.ml" in -# 3116 "parsing/parser.mly" +# 3123 "parsing/parser.mly" ( Ppat_open (_1, _4) ) -# 60827 "parsing/parser.ml" +# 60953 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -60831,15 +60957,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60837 "parsing/parser.ml" +# 60963 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60843 "parsing/parser.ml" +# 60969 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60896,9 +61022,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3118 "parsing/parser.mly" +# 3125 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 60902 "parsing/parser.ml" +# 61028 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -60906,15 +61032,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60912 "parsing/parser.ml" +# 61038 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60918 "parsing/parser.ml" +# 61044 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -60963,9 +61089,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3120 "parsing/parser.mly" +# 3127 "parsing/parser.mly" ( expecting _loc__4_ "pattern" ) -# 60969 "parsing/parser.ml" +# 61095 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -60973,15 +61099,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 60979 "parsing/parser.ml" +# 61105 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 60985 "parsing/parser.ml" +# 61111 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61024,9 +61150,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3122 "parsing/parser.mly" +# 3129 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 61030 "parsing/parser.ml" +# 61156 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -61034,15 +61160,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61040 "parsing/parser.ml" +# 61166 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61046 "parsing/parser.ml" +# 61172 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61096,24 +61222,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3124 "parsing/parser.mly" +# 3131 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 61102 "parsing/parser.ml" +# 61228 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61111 "parsing/parser.ml" +# 61237 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61117 "parsing/parser.ml" +# 61243 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61170,9 +61296,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3126 "parsing/parser.mly" +# 3133 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 61176 "parsing/parser.ml" +# 61302 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -61180,15 +61306,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61186 "parsing/parser.ml" +# 61312 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61192 "parsing/parser.ml" +# 61318 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61237,9 +61363,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3128 "parsing/parser.mly" +# 3135 "parsing/parser.mly" ( expecting _loc__4_ "type" ) -# 61243 "parsing/parser.ml" +# 61369 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -61247,15 +61373,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61253 "parsing/parser.ml" +# 61379 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61259 "parsing/parser.ml" +# 61385 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61337,19 +61463,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3965 "parsing/parser.mly" +# 3974 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) -# 61344 "parsing/parser.ml" +# 61470 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3969 "parsing/parser.mly" +# 3978 "parsing/parser.mly" ( mktyp ~loc:_sloc (Ptyp_package _1) ) -# 61353 "parsing/parser.ml" +# 61479 "parsing/parser.ml" in let _3 = @@ -61357,23 +61483,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 61363 "parsing/parser.ml" +# 61489 "parsing/parser.ml" in -# 4404 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( _1, _2 ) -# 61369 "parsing/parser.ml" +# 61495 "parsing/parser.ml" in let _loc__7_ = (_startpos__7_, _endpos__7_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3131 "parsing/parser.mly" +# 3138 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__7_ ) -# 61377 "parsing/parser.ml" +# 61503 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -61381,15 +61507,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61387 "parsing/parser.ml" +# 61513 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61393 "parsing/parser.ml" +# 61519 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61415,23 +61541,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3133 "parsing/parser.mly" +# 3140 "parsing/parser.mly" ( Ppat_extension _1 ) -# 61421 "parsing/parser.ml" +# 61547 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "parsing/parser.mly" +# 1049 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 61429 "parsing/parser.ml" +# 61555 "parsing/parser.ml" in ( -# 3094 "parsing/parser.mly" +# 3101 "parsing/parser.mly" ( _1 ) -# 61435 "parsing/parser.ml" +# 61561 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -61453,15 +61579,15 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 61457 "parsing/parser.ml" +# 61583 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4311 "parsing/parser.mly" +# 4320 "parsing/parser.mly" ( _1 ) -# 61465 "parsing/parser.ml" +# 61591 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61482,15 +61608,15 @@ module Tables = struct let _1 : # 876 "parsing/parser.mly" (string) -# 61486 "parsing/parser.ml" +# 61612 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4312 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( _1 ) -# 61494 "parsing/parser.ml" +# 61620 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61513,9 +61639,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4313 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( "and" ) -# 61519 "parsing/parser.ml" +# 61645 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61538,9 +61664,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4314 "parsing/parser.mly" +# 4323 "parsing/parser.mly" ( "as" ) -# 61544 "parsing/parser.ml" +# 61670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61563,9 +61689,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4315 "parsing/parser.mly" +# 4324 "parsing/parser.mly" ( "assert" ) -# 61569 "parsing/parser.ml" +# 61695 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61588,9 +61714,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4316 "parsing/parser.mly" +# 4325 "parsing/parser.mly" ( "begin" ) -# 61594 "parsing/parser.ml" +# 61720 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61613,9 +61739,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4317 "parsing/parser.mly" +# 4326 "parsing/parser.mly" ( "class" ) -# 61619 "parsing/parser.ml" +# 61745 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61638,9 +61764,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4318 "parsing/parser.mly" +# 4327 "parsing/parser.mly" ( "constraint" ) -# 61644 "parsing/parser.ml" +# 61770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61663,9 +61789,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4319 "parsing/parser.mly" +# 4328 "parsing/parser.mly" ( "do" ) -# 61669 "parsing/parser.ml" +# 61795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61688,9 +61814,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4320 "parsing/parser.mly" +# 4329 "parsing/parser.mly" ( "done" ) -# 61694 "parsing/parser.ml" +# 61820 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61713,9 +61839,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4321 "parsing/parser.mly" +# 4330 "parsing/parser.mly" ( "downto" ) -# 61719 "parsing/parser.ml" +# 61845 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61738,9 +61864,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4322 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( "effect" ) -# 61744 "parsing/parser.ml" +# 61870 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61763,9 +61889,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4323 "parsing/parser.mly" +# 4332 "parsing/parser.mly" ( "else" ) -# 61769 "parsing/parser.ml" +# 61895 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61788,9 +61914,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4324 "parsing/parser.mly" +# 4333 "parsing/parser.mly" ( "end" ) -# 61794 "parsing/parser.ml" +# 61920 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61813,9 +61939,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4325 "parsing/parser.mly" +# 4334 "parsing/parser.mly" ( "exception" ) -# 61819 "parsing/parser.ml" +# 61945 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61838,9 +61964,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4326 "parsing/parser.mly" +# 4335 "parsing/parser.mly" ( "external" ) -# 61844 "parsing/parser.ml" +# 61970 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61863,9 +61989,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4327 "parsing/parser.mly" +# 4336 "parsing/parser.mly" ( "false" ) -# 61869 "parsing/parser.ml" +# 61995 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61888,9 +62014,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4328 "parsing/parser.mly" +# 4337 "parsing/parser.mly" ( "for" ) -# 61894 "parsing/parser.ml" +# 62020 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61913,9 +62039,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4329 "parsing/parser.mly" +# 4338 "parsing/parser.mly" ( "fun" ) -# 61919 "parsing/parser.ml" +# 62045 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61938,9 +62064,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4330 "parsing/parser.mly" +# 4339 "parsing/parser.mly" ( "function" ) -# 61944 "parsing/parser.ml" +# 62070 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61963,9 +62089,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4331 "parsing/parser.mly" +# 4340 "parsing/parser.mly" ( "functor" ) -# 61969 "parsing/parser.ml" +# 62095 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -61988,9 +62114,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4332 "parsing/parser.mly" +# 4341 "parsing/parser.mly" ( "if" ) -# 61994 "parsing/parser.ml" +# 62120 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62013,9 +62139,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4333 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( "in" ) -# 62019 "parsing/parser.ml" +# 62145 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62038,9 +62164,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4334 "parsing/parser.mly" +# 4343 "parsing/parser.mly" ( "include" ) -# 62044 "parsing/parser.ml" +# 62170 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62063,9 +62189,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4335 "parsing/parser.mly" +# 4344 "parsing/parser.mly" ( "inherit" ) -# 62069 "parsing/parser.ml" +# 62195 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62088,9 +62214,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4336 "parsing/parser.mly" +# 4345 "parsing/parser.mly" ( "initializer" ) -# 62094 "parsing/parser.ml" +# 62220 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62113,9 +62239,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4337 "parsing/parser.mly" +# 4346 "parsing/parser.mly" ( "lazy" ) -# 62119 "parsing/parser.ml" +# 62245 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62138,9 +62264,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4338 "parsing/parser.mly" +# 4347 "parsing/parser.mly" ( "let" ) -# 62144 "parsing/parser.ml" +# 62270 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62163,9 +62289,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4339 "parsing/parser.mly" +# 4348 "parsing/parser.mly" ( "match" ) -# 62169 "parsing/parser.ml" +# 62295 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62188,9 +62314,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4340 "parsing/parser.mly" +# 4349 "parsing/parser.mly" ( "method" ) -# 62194 "parsing/parser.ml" +# 62320 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62213,9 +62339,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4341 "parsing/parser.mly" +# 4350 "parsing/parser.mly" ( "module" ) -# 62219 "parsing/parser.ml" +# 62345 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62238,9 +62364,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4342 "parsing/parser.mly" +# 4351 "parsing/parser.mly" ( "mutable" ) -# 62244 "parsing/parser.ml" +# 62370 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62263,9 +62389,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4343 "parsing/parser.mly" +# 4352 "parsing/parser.mly" ( "new" ) -# 62269 "parsing/parser.ml" +# 62395 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62288,9 +62414,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4344 "parsing/parser.mly" +# 4353 "parsing/parser.mly" ( "nonrec" ) -# 62294 "parsing/parser.ml" +# 62420 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62313,9 +62439,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4345 "parsing/parser.mly" +# 4354 "parsing/parser.mly" ( "object" ) -# 62319 "parsing/parser.ml" +# 62445 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62338,9 +62464,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4346 "parsing/parser.mly" +# 4355 "parsing/parser.mly" ( "of" ) -# 62344 "parsing/parser.ml" +# 62470 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62363,9 +62489,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4347 "parsing/parser.mly" +# 4356 "parsing/parser.mly" ( "open" ) -# 62369 "parsing/parser.ml" +# 62495 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62388,9 +62514,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4348 "parsing/parser.mly" +# 4357 "parsing/parser.mly" ( "or" ) -# 62394 "parsing/parser.ml" +# 62520 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62413,9 +62539,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4349 "parsing/parser.mly" +# 4358 "parsing/parser.mly" ( "private" ) -# 62419 "parsing/parser.ml" +# 62545 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62438,9 +62564,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4350 "parsing/parser.mly" +# 4359 "parsing/parser.mly" ( "rec" ) -# 62444 "parsing/parser.ml" +# 62570 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62463,9 +62589,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4351 "parsing/parser.mly" +# 4360 "parsing/parser.mly" ( "sig" ) -# 62469 "parsing/parser.ml" +# 62595 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62488,9 +62614,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4352 "parsing/parser.mly" +# 4361 "parsing/parser.mly" ( "struct" ) -# 62494 "parsing/parser.ml" +# 62620 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62513,9 +62639,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4353 "parsing/parser.mly" +# 4362 "parsing/parser.mly" ( "then" ) -# 62519 "parsing/parser.ml" +# 62645 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62538,9 +62664,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4354 "parsing/parser.mly" +# 4363 "parsing/parser.mly" ( "to" ) -# 62544 "parsing/parser.ml" +# 62670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62563,9 +62689,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4355 "parsing/parser.mly" +# 4364 "parsing/parser.mly" ( "true" ) -# 62569 "parsing/parser.ml" +# 62695 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62588,9 +62714,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4356 "parsing/parser.mly" +# 4365 "parsing/parser.mly" ( "try" ) -# 62594 "parsing/parser.ml" +# 62720 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62613,9 +62739,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4357 "parsing/parser.mly" +# 4366 "parsing/parser.mly" ( "type" ) -# 62619 "parsing/parser.ml" +# 62745 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62638,9 +62764,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4358 "parsing/parser.mly" +# 4367 "parsing/parser.mly" ( "val" ) -# 62644 "parsing/parser.ml" +# 62770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62663,9 +62789,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4359 "parsing/parser.mly" +# 4368 "parsing/parser.mly" ( "virtual" ) -# 62669 "parsing/parser.ml" +# 62795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62688,9 +62814,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4360 "parsing/parser.mly" +# 4369 "parsing/parser.mly" ( "when" ) -# 62694 "parsing/parser.ml" +# 62820 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62713,9 +62839,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4361 "parsing/parser.mly" +# 4370 "parsing/parser.mly" ( "while" ) -# 62719 "parsing/parser.ml" +# 62845 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62738,9 +62864,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4362 "parsing/parser.mly" +# 4371 "parsing/parser.mly" ( "with" ) -# 62744 "parsing/parser.ml" +# 62870 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62815,18 +62941,18 @@ module Tables = struct let attrs = let _1 = _1_inlined5 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 62821 "parsing/parser.ml" +# 62947 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined5_ in let attrs2 = let _1 = _1_inlined4 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 62830 "parsing/parser.ml" +# 62956 "parsing/parser.ml" in let lid = @@ -62835,9 +62961,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 62841 "parsing/parser.ml" +# 62967 "parsing/parser.ml" in let id = @@ -62846,30 +62972,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 62852 "parsing/parser.ml" +# 62978 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 62860 "parsing/parser.ml" +# 62986 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3510 "parsing/parser.mly" +# 3517 "parsing/parser.mly" ( let loc = make_loc _sloc in let docs = symbol_docs _sloc in Te.mk_exception ~attrs ~loc (Te.rebind id lid ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 62873 "parsing/parser.ml" +# 62999 "parsing/parser.ml" : (Parsetree.type_exception * string Asttypes.loc option)) in { @@ -62900,9 +63026,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2814 "parsing/parser.mly" +# 2821 "parsing/parser.mly" ( _2 ) -# 62906 "parsing/parser.ml" +# 63032 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -62950,10 +63076,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2816 "parsing/parser.mly" +# 2823 "parsing/parser.mly" ( ghexp ~loc:_sloc (mkfunction _1 _2 _4) ) -# 62957 "parsing/parser.ml" +# 63083 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -62982,39 +63108,39 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 62986 "parsing/parser.ml" +# 63112 "parsing/parser.ml" in let xs = let items = -# 1078 "parsing/parser.mly" +# 1080 "parsing/parser.mly" ( [] ) -# 62992 "parsing/parser.ml" +# 63118 "parsing/parser.ml" in -# 1529 "parsing/parser.mly" +# 1534 "parsing/parser.mly" ( items ) -# 62997 "parsing/parser.ml" +# 63123 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 63003 "parsing/parser.ml" +# 63129 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1004 "parsing/parser.mly" +# 1006 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 63012 "parsing/parser.ml" +# 63138 "parsing/parser.ml" in ( -# 1522 "parsing/parser.mly" +# 1527 "parsing/parser.mly" ( _1 ) -# 63018 "parsing/parser.ml" +# 63144 "parsing/parser.ml" : (Parsetree.structure)) in { @@ -63057,7 +63183,7 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 63061 "parsing/parser.ml" +# 63187 "parsing/parser.ml" in let xs = let items = @@ -63065,65 +63191,65 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 63071 "parsing/parser.ml" +# 63197 "parsing/parser.ml" in -# 1536 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( mkstrexp e attrs ) -# 63076 "parsing/parser.ml" +# 63202 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1016 "parsing/parser.mly" +# 1018 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 63084 "parsing/parser.ml" +# 63210 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1035 "parsing/parser.mly" +# 1037 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 63094 "parsing/parser.ml" +# 63220 "parsing/parser.ml" in -# 1080 "parsing/parser.mly" +# 1082 "parsing/parser.mly" ( x ) -# 63100 "parsing/parser.ml" +# 63226 "parsing/parser.ml" in -# 1529 "parsing/parser.mly" +# 1534 "parsing/parser.mly" ( items ) -# 63106 "parsing/parser.ml" +# 63232 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 63112 "parsing/parser.ml" +# 63238 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1004 "parsing/parser.mly" +# 1006 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 63121 "parsing/parser.ml" +# 63247 "parsing/parser.ml" in ( -# 1522 "parsing/parser.mly" +# 1527 "parsing/parser.mly" ( _1 ) -# 63127 "parsing/parser.ml" +# 63253 "parsing/parser.ml" : (Parsetree.structure)) in { @@ -63151,9 +63277,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1551 "parsing/parser.mly" +# 1556 "parsing/parser.mly" ( val_of_let_bindings ~loc:_sloc _1 ) -# 63157 "parsing/parser.ml" +# 63283 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -63211,38 +63337,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 63217 "parsing/parser.ml" +# 63343 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 63226 "parsing/parser.ml" +# 63352 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1677 "parsing/parser.mly" +# 1682 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 63240 "parsing/parser.ml" +# 63366 "parsing/parser.ml" in -# 1554 "parsing/parser.mly" +# 1559 "parsing/parser.mly" ( pstr_include _1 ) -# 63246 "parsing/parser.ml" +# 63372 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -63250,15 +63376,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1064 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 63256 "parsing/parser.ml" +# 63382 "parsing/parser.ml" in ( -# 1556 "parsing/parser.mly" +# 1561 "parsing/parser.mly" ( _1 ) -# 63262 "parsing/parser.ml" +# 63388 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -63282,9 +63408,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = -# 1558 "parsing/parser.mly" +# 1563 "parsing/parser.mly" ( _1 ) -# 63288 "parsing/parser.ml" +# 63414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -63307,9 +63433,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4296 "parsing/parser.mly" +# 4305 "parsing/parser.mly" ( "-" ) -# 63313 "parsing/parser.ml" +# 63439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -63332,9 +63458,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4297 "parsing/parser.mly" +# 4306 "parsing/parser.mly" ( "-." ) -# 63338 "parsing/parser.ml" +# 63464 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -63388,9 +63514,9 @@ module Tables = struct let _5 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 63394 "parsing/parser.ml" +# 63520 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined1_ in @@ -63399,18 +63525,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 63403 "parsing/parser.ml" +# 63529 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 63408 "parsing/parser.ml" +# 63534 "parsing/parser.ml" in -# 3997 "parsing/parser.mly" +# 4006 "parsing/parser.mly" ( _1 ) -# 63414 "parsing/parser.ml" +# 63540 "parsing/parser.ml" in let _1 = @@ -63418,20 +63544,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63424 "parsing/parser.ml" +# 63550 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3983 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _5 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 _3 _4 ) -# 63435 "parsing/parser.ml" +# 63561 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -63465,9 +63591,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 63471 "parsing/parser.ml" +# 63597 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -63476,20 +63602,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63482 "parsing/parser.ml" +# 63608 "parsing/parser.ml" in let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3987 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _2 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 true [] ) -# 63493 "parsing/parser.ml" +# 63619 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -63523,7 +63649,7 @@ module Tables = struct let arg = # 123 "" ( None ) -# 63527 "parsing/parser.ml" +# 63653 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -63532,18 +63658,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63538 "parsing/parser.ml" +# 63664 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63547 "parsing/parser.ml" +# 63673 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63577,7 +63703,7 @@ module Tables = struct let _1_inlined2 : # 863 "parsing/parser.mly" (string * Location.t * string option) -# 63581 "parsing/parser.ml" +# 63707 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -63589,23 +63715,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4198 "parsing/parser.mly" +# 4207 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 63595 "parsing/parser.ml" +# 63721 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 63603 "parsing/parser.ml" +# 63729 "parsing/parser.ml" in # 126 "" ( Some x ) -# 63609 "parsing/parser.ml" +# 63735 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -63615,18 +63741,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63621 "parsing/parser.ml" +# 63747 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63630 "parsing/parser.ml" +# 63756 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63660,7 +63786,7 @@ module Tables = struct let _1_inlined2 : # 811 "parsing/parser.mly" (string * char option) -# 63664 "parsing/parser.ml" +# 63790 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -63672,23 +63798,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4199 "parsing/parser.mly" +# 4208 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 63678 "parsing/parser.ml" +# 63804 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 63686 "parsing/parser.ml" +# 63812 "parsing/parser.ml" in # 126 "" ( Some x ) -# 63692 "parsing/parser.ml" +# 63818 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -63698,18 +63824,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63704 "parsing/parser.ml" +# 63830 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63713 "parsing/parser.ml" +# 63839 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63751,23 +63877,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4200 "parsing/parser.mly" +# 4209 "parsing/parser.mly" ( Pdir_ident _1 ) -# 63757 "parsing/parser.ml" +# 63883 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 63765 "parsing/parser.ml" +# 63891 "parsing/parser.ml" in # 126 "" ( Some x ) -# 63771 "parsing/parser.ml" +# 63897 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -63777,18 +63903,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63783 "parsing/parser.ml" +# 63909 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63792 "parsing/parser.ml" +# 63918 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63830,23 +63956,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4201 "parsing/parser.mly" +# 4210 "parsing/parser.mly" ( Pdir_ident _1 ) -# 63836 "parsing/parser.ml" +# 63962 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 63844 "parsing/parser.ml" +# 63970 "parsing/parser.ml" in # 126 "" ( Some x ) -# 63850 "parsing/parser.ml" +# 63976 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -63856,18 +63982,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63862 "parsing/parser.ml" +# 63988 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63871 "parsing/parser.ml" +# 63997 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63909,23 +64035,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4202 "parsing/parser.mly" +# 4211 "parsing/parser.mly" ( Pdir_bool false ) -# 63915 "parsing/parser.ml" +# 64041 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 63923 "parsing/parser.ml" +# 64049 "parsing/parser.ml" in # 126 "" ( Some x ) -# 63929 "parsing/parser.ml" +# 64055 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -63935,18 +64061,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 63941 "parsing/parser.ml" +# 64067 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 63950 "parsing/parser.ml" +# 64076 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -63988,23 +64114,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4203 "parsing/parser.mly" +# 4212 "parsing/parser.mly" ( Pdir_bool true ) -# 63994 "parsing/parser.ml" +# 64120 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1069 "parsing/parser.mly" +# 1071 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 64002 "parsing/parser.ml" +# 64128 "parsing/parser.ml" in # 126 "" ( Some x ) -# 64008 "parsing/parser.ml" +# 64134 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -64014,18 +64140,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 64020 "parsing/parser.ml" +# 64146 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4194 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 64029 "parsing/parser.ml" +# 64155 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -64067,37 +64193,37 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 64073 "parsing/parser.ml" +# 64199 "parsing/parser.ml" in -# 1536 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( mkstrexp e attrs ) -# 64078 "parsing/parser.ml" +# 64204 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1016 "parsing/parser.mly" +# 1018 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 64086 "parsing/parser.ml" +# 64212 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1004 "parsing/parser.mly" +# 1006 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 64095 "parsing/parser.ml" +# 64221 "parsing/parser.ml" in ( -# 1300 "parsing/parser.mly" +# 1302 "parsing/parser.mly" ( Ptop_def _1 ) -# 64101 "parsing/parser.ml" +# 64227 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -64132,21 +64258,21 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 64136 "parsing/parser.ml" +# 64262 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1004 "parsing/parser.mly" +# 1006 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 64144 "parsing/parser.ml" +# 64270 "parsing/parser.ml" in ( -# 1304 "parsing/parser.mly" +# 1306 "parsing/parser.mly" ( Ptop_def _1 ) -# 64150 "parsing/parser.ml" +# 64276 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -64177,9 +64303,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.toplevel_phrase) = -# 1308 "parsing/parser.mly" +# 1310 "parsing/parser.mly" ( _1 ) -# 64183 "parsing/parser.ml" +# 64309 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64202,9 +64328,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.toplevel_phrase) = -# 1311 "parsing/parser.mly" +# 1313 "parsing/parser.mly" ( raise End_of_file ) -# 64208 "parsing/parser.ml" +# 64334 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64227,9 +64353,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3821 "parsing/parser.mly" +# 3830 "parsing/parser.mly" ( ty ) -# 64233 "parsing/parser.ml" +# 64359 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64271,18 +64397,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 64275 "parsing/parser.ml" +# 64401 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 64280 "parsing/parser.ml" +# 64406 "parsing/parser.ml" in -# 3830 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( ty, ltys ) -# 64286 "parsing/parser.ml" +# 64412 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_ty_) in @@ -64290,10 +64416,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3823 "parsing/parser.mly" +# 3832 "parsing/parser.mly" ( let ty, ltys = _1 in mktyp ~loc:_sloc (Ptyp_tuple ((None, ty) :: ltys)) ) -# 64297 "parsing/parser.ml" +# 64423 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -64324,9 +64450,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2994 "parsing/parser.mly" +# 3001 "parsing/parser.mly" ( Pconstraint _2 ) -# 64330 "parsing/parser.ml" +# 64456 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64370,9 +64496,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.type_constraint) = -# 2995 "parsing/parser.mly" +# 3002 "parsing/parser.mly" ( Pcoerce (Some _2, _4) ) -# 64376 "parsing/parser.ml" +# 64502 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64402,9 +64528,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2996 "parsing/parser.mly" +# 3003 "parsing/parser.mly" ( Pcoerce (None, _2) ) -# 64408 "parsing/parser.ml" +# 64534 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64434,9 +64560,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2997 "parsing/parser.mly" +# 3004 "parsing/parser.mly" ( syntax_error() ) -# 64440 "parsing/parser.ml" +# 64566 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64466,9 +64592,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2998 "parsing/parser.mly" +# 3005 "parsing/parser.mly" ( syntax_error() ) -# 64472 "parsing/parser.ml" +# 64598 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64484,9 +64610,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3415 "parsing/parser.mly" +# 3422 "parsing/parser.mly" ( (Ptype_abstract, Public, None) ) -# 64490 "parsing/parser.ml" +# 64616 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64516,9 +64642,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3417 "parsing/parser.mly" +# 3424 "parsing/parser.mly" ( _2 ) -# 64522 "parsing/parser.ml" +# 64648 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64541,9 +64667,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4155 "parsing/parser.mly" +# 4164 "parsing/parser.mly" ( _1 ) -# 64547 "parsing/parser.ml" +# 64673 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64573,9 +64699,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3432 "parsing/parser.mly" +# 3439 "parsing/parser.mly" ( _2, _1 ) -# 64579 "parsing/parser.ml" +# 64705 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64591,9 +64717,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3425 "parsing/parser.mly" +# 3432 "parsing/parser.mly" ( [] ) -# 64597 "parsing/parser.ml" +# 64723 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64616,9 +64742,9 @@ module Tables = struct let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3427 "parsing/parser.mly" +# 3434 "parsing/parser.mly" ( [p] ) -# 64622 "parsing/parser.ml" +# 64748 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64659,18 +64785,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 64663 "parsing/parser.ml" +# 64789 "parsing/parser.ml" in -# 1163 "parsing/parser.mly" +# 1165 "parsing/parser.mly" ( xs ) -# 64668 "parsing/parser.ml" +# 64794 "parsing/parser.ml" in ( -# 3429 "parsing/parser.mly" +# 3436 "parsing/parser.mly" ( ps ) -# 64674 "parsing/parser.ml" +# 64800 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -64703,24 +64829,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3437 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( Ptyp_var tyvar ) -# 64709 "parsing/parser.ml" +# 64835 "parsing/parser.ml" in let _endpos__1_ = _endpos_tyvar_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 64718 "parsing/parser.ml" +# 64844 "parsing/parser.ml" in ( -# 3440 "parsing/parser.mly" +# 3447 "parsing/parser.mly" ( _1 ) -# 64724 "parsing/parser.ml" +# 64850 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -64746,23 +64872,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3439 "parsing/parser.mly" +# 3446 "parsing/parser.mly" ( Ptyp_any ) -# 64752 "parsing/parser.ml" +# 64878 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "parsing/parser.mly" +# 1051 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 64760 "parsing/parser.ml" +# 64886 "parsing/parser.ml" in ( -# 3440 "parsing/parser.mly" +# 3447 "parsing/parser.mly" ( _1 ) -# 64766 "parsing/parser.ml" +# 64892 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -64779,9 +64905,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3444 "parsing/parser.mly" +# 3451 "parsing/parser.mly" ( NoVariance, NoInjectivity ) -# 64785 "parsing/parser.ml" +# 64911 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64804,9 +64930,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3445 "parsing/parser.mly" +# 3452 "parsing/parser.mly" ( Covariant, NoInjectivity ) -# 64810 "parsing/parser.ml" +# 64936 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64829,9 +64955,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3446 "parsing/parser.mly" +# 3453 "parsing/parser.mly" ( Contravariant, NoInjectivity ) -# 64835 "parsing/parser.ml" +# 64961 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64854,9 +64980,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3447 "parsing/parser.mly" +# 3454 "parsing/parser.mly" ( NoVariance, Injective ) -# 64860 "parsing/parser.ml" +# 64986 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64886,9 +65012,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3448 "parsing/parser.mly" +# 3455 "parsing/parser.mly" ( Covariant, Injective ) -# 64892 "parsing/parser.ml" +# 65018 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64918,9 +65044,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3448 "parsing/parser.mly" +# 3455 "parsing/parser.mly" ( Covariant, Injective ) -# 64924 "parsing/parser.ml" +# 65050 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64950,9 +65076,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3449 "parsing/parser.mly" +# 3456 "parsing/parser.mly" ( Contravariant, Injective ) -# 64956 "parsing/parser.ml" +# 65082 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -64982,9 +65108,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3449 "parsing/parser.mly" +# 3456 "parsing/parser.mly" ( Contravariant, Injective ) -# 64988 "parsing/parser.ml" +# 65114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -65005,7 +65131,7 @@ module Tables = struct let _1 : # 803 "parsing/parser.mly" (string) -# 65009 "parsing/parser.ml" +# 65135 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -65013,7 +65139,7 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3451 "parsing/parser.mly" +# 3458 "parsing/parser.mly" ( if _1 = "+!" then Covariant, Injective else if _1 = "-!" then Contravariant, Injective else if _1 = "+-" then Bivariant, NoInjectivity else @@ -65021,7 +65147,7 @@ module Tables = struct if _1 = "+-!" then Bivariant, Injective else if _1 = "-+!" then Bivariant, Injective else expecting _loc__1_ "type_variance" ) -# 65025 "parsing/parser.ml" +# 65151 "parsing/parser.ml" : (Asttypes.variance * Asttypes.injectivity)) in { @@ -65043,7 +65169,7 @@ module Tables = struct let _1 : # 849 "parsing/parser.mly" (string) -# 65047 "parsing/parser.ml" +# 65173 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -65051,13 +65177,13 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3459 "parsing/parser.mly" +# 3466 "parsing/parser.mly" ( if _1 = "!+" then Covariant, Injective else if _1 = "!-" then Contravariant, Injective else if _1 = "!+-" then Bivariant, Injective else if _1 = "!-+" then Bivariant, Injective else expecting _loc__1_ "type_variance" ) -# 65061 "parsing/parser.ml" +# 65187 "parsing/parser.ml" : (Asttypes.variance * Asttypes.injectivity)) in { @@ -65093,39 +65219,39 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 65097 "parsing/parser.ml" +# 65223 "parsing/parser.ml" in let xs = let _1 = -# 1078 "parsing/parser.mly" +# 1080 "parsing/parser.mly" ( [] ) -# 65103 "parsing/parser.ml" +# 65229 "parsing/parser.ml" in -# 1331 "parsing/parser.mly" +# 1333 "parsing/parser.mly" ( _1 ) -# 65108 "parsing/parser.ml" +# 65234 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 65114 "parsing/parser.ml" +# 65240 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1008 "parsing/parser.mly" +# 1010 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 65123 "parsing/parser.ml" +# 65249 "parsing/parser.ml" in ( -# 1324 "parsing/parser.mly" +# 1326 "parsing/parser.mly" ( _1 ) -# 65129 "parsing/parser.ml" +# 65255 "parsing/parser.ml" : (Parsetree.toplevel_phrase list)) in { @@ -65175,7 +65301,7 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 65179 "parsing/parser.ml" +# 65305 "parsing/parser.ml" in let xs = let _1 = @@ -65183,61 +65309,61 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 65189 "parsing/parser.ml" +# 65315 "parsing/parser.ml" in -# 1536 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( mkstrexp e attrs ) -# 65194 "parsing/parser.ml" +# 65320 "parsing/parser.ml" in -# 1026 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( Ptop_def [_1] ) -# 65200 "parsing/parser.ml" +# 65326 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1024 "parsing/parser.mly" +# 1026 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 65208 "parsing/parser.ml" +# 65334 "parsing/parser.ml" in -# 1080 "parsing/parser.mly" +# 1082 "parsing/parser.mly" ( x ) -# 65214 "parsing/parser.ml" +# 65340 "parsing/parser.ml" in -# 1331 "parsing/parser.mly" +# 1333 "parsing/parser.mly" ( _1 ) -# 65220 "parsing/parser.ml" +# 65346 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 65226 "parsing/parser.ml" +# 65352 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1008 "parsing/parser.mly" +# 1010 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 65235 "parsing/parser.ml" +# 65361 "parsing/parser.ml" in ( -# 1324 "parsing/parser.mly" +# 1326 "parsing/parser.mly" ( _1 ) -# 65241 "parsing/parser.ml" +# 65367 "parsing/parser.ml" : (Parsetree.toplevel_phrase list)) in { @@ -65275,9 +65401,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = -# 4074 "parsing/parser.mly" +# 4083 "parsing/parser.mly" ( _2 ) -# 65281 "parsing/parser.ml" +# 65407 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -65317,9 +65443,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 4075 "parsing/parser.mly" +# 4084 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 65323 "parsing/parser.ml" +# 65449 "parsing/parser.ml" : (Asttypes.label)) in { @@ -65352,9 +65478,9 @@ module Tables = struct let _v = let _loc__2_ = (_startpos__2_, _endpos__2_) in ( -# 4076 "parsing/parser.mly" +# 4085 "parsing/parser.mly" ( expecting _loc__2_ "operator" ) -# 65358 "parsing/parser.ml" +# 65484 "parsing/parser.ml" : (Asttypes.label)) in { @@ -65394,9 +65520,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 4077 "parsing/parser.mly" +# 4086 "parsing/parser.mly" ( expecting _loc__3_ "module-expr" ) -# 65400 "parsing/parser.ml" +# 65526 "parsing/parser.ml" : (Asttypes.label)) in { @@ -65418,15 +65544,15 @@ module Tables = struct let _1 : # 825 "parsing/parser.mly" (string) -# 65422 "parsing/parser.ml" +# 65548 "parsing/parser.ml" = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4080 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( _1 ) -# 65430 "parsing/parser.ml" +# 65556 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -65449,9 +65575,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4081 "parsing/parser.mly" +# 4090 "parsing/parser.mly" ( _1 ) -# 65455 "parsing/parser.ml" +# 65581 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -65474,9 +65600,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4149 "parsing/parser.mly" +# 4158 "parsing/parser.mly" ( _1 ) -# 65480 "parsing/parser.ml" +# 65606 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -65523,7 +65649,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 65527 "parsing/parser.ml" +# 65653 "parsing/parser.ml" = Obj.magic _1_inlined1 in let mutable_ : (Asttypes.mutable_flag) = Obj.magic mutable_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -65534,33 +65660,33 @@ module Tables = struct let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 65540 "parsing/parser.ml" +# 65666 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 65548 "parsing/parser.ml" +# 65674 "parsing/parser.ml" in let attrs = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 65554 "parsing/parser.ml" +# 65680 "parsing/parser.ml" in let _1 = -# 4289 "parsing/parser.mly" +# 4298 "parsing/parser.mly" ( Fresh ) -# 65559 "parsing/parser.ml" +# 65685 "parsing/parser.ml" in ( -# 2118 "parsing/parser.mly" +# 2123 "parsing/parser.mly" ( (label, mutable_, Cfk_virtual ty), attrs ) -# 65564 "parsing/parser.ml" +# 65690 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -65610,7 +65736,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 65614 "parsing/parser.ml" +# 65740 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -65621,33 +65747,33 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 65627 "parsing/parser.ml" +# 65753 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 65635 "parsing/parser.ml" +# 65761 "parsing/parser.ml" in let _2 = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 65641 "parsing/parser.ml" +# 65767 "parsing/parser.ml" in let _1 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 65646 "parsing/parser.ml" +# 65772 "parsing/parser.ml" in ( -# 2120 "parsing/parser.mly" +# 2125 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 65651 "parsing/parser.ml" +# 65777 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -65703,7 +65829,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 65707 "parsing/parser.ml" +# 65833 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -65715,36 +65841,36 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 65721 "parsing/parser.ml" +# 65847 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 65729 "parsing/parser.ml" +# 65855 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 65737 "parsing/parser.ml" +# 65863 "parsing/parser.ml" in let _1 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 65743 "parsing/parser.ml" +# 65869 "parsing/parser.ml" in ( -# 2120 "parsing/parser.mly" +# 2125 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 65748 "parsing/parser.ml" +# 65874 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -65801,7 +65927,7 @@ module Tables = struct let _1_inlined1 : # 825 "parsing/parser.mly" (string) -# 65805 "parsing/parser.ml" +# 65931 "parsing/parser.ml" = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -65812,30 +65938,30 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 65818 "parsing/parser.ml" +# 65944 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 65826 "parsing/parser.ml" +# 65952 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 65833 "parsing/parser.ml" +# 65959 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4292 "parsing/parser.mly" +# 4301 "parsing/parser.mly" ( Fresh ) -# 65839 "parsing/parser.ml" +# 65965 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__7_ in @@ -65851,11 +65977,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2123 "parsing/parser.mly" +# 2128 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 65859 "parsing/parser.ml" +# 65985 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -65918,7 +66044,7 @@ module Tables = struct let _1_inlined2 : # 825 "parsing/parser.mly" (string) -# 65922 "parsing/parser.ml" +# 66048 "parsing/parser.ml" = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -65930,33 +66056,33 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4041 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 65936 "parsing/parser.ml" +# 66062 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 65944 "parsing/parser.ml" +# 66070 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 65953 "parsing/parser.ml" +# 66079 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4293 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( Override ) -# 65960 "parsing/parser.ml" +# 66086 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -65971,11 +66097,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2123 "parsing/parser.mly" +# 2128 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 65979 "parsing/parser.ml" +# 66105 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -66046,9 +66172,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4387 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 66052 "parsing/parser.ml" +# 66178 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -66058,30 +66184,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66064 "parsing/parser.ml" +# 66190 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4391 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( _1 ) -# 66072 "parsing/parser.ml" +# 66198 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3257 "parsing/parser.mly" +# 3264 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~attrs ~loc ~docs, ext ) -# 66085 "parsing/parser.ml" +# 66211 "parsing/parser.ml" : (Parsetree.value_description * string Asttypes.loc option)) in { @@ -66098,9 +66224,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.virtual_flag) = -# 4253 "parsing/parser.mly" +# 4262 "parsing/parser.mly" ( Concrete ) -# 66104 "parsing/parser.ml" +# 66230 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66123,9 +66249,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.virtual_flag) = -# 4254 "parsing/parser.mly" +# 4263 "parsing/parser.mly" ( Virtual ) -# 66129 "parsing/parser.ml" +# 66255 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66148,9 +66274,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4277 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( Immutable ) -# 66154 "parsing/parser.ml" +# 66280 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66180,9 +66306,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4278 "parsing/parser.mly" +# 4287 "parsing/parser.mly" ( Mutable ) -# 66186 "parsing/parser.ml" +# 66312 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66212,9 +66338,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4279 "parsing/parser.mly" +# 4288 "parsing/parser.mly" ( Mutable ) -# 66218 "parsing/parser.ml" +# 66344 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66237,9 +66363,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 4284 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Public ) -# 66243 "parsing/parser.ml" +# 66369 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66269,9 +66395,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4285 "parsing/parser.mly" +# 4294 "parsing/parser.mly" ( Private ) -# 66275 "parsing/parser.ml" +# 66401 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66301,9 +66427,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4286 "parsing/parser.mly" +# 4295 "parsing/parser.mly" ( Private ) -# 66307 "parsing/parser.ml" +# 66433 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66366,27 +66492,27 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 66370 "parsing/parser.ml" +# 66496 "parsing/parser.ml" in -# 1092 "parsing/parser.mly" +# 1094 "parsing/parser.mly" ( xs ) -# 66375 "parsing/parser.ml" +# 66501 "parsing/parser.ml" in -# 3384 "parsing/parser.mly" +# 3391 "parsing/parser.mly" ( _1 ) -# 66381 "parsing/parser.ml" +# 66507 "parsing/parser.ml" in let _endpos__6_ = _endpos_xs_ in let _5 = let _1 = _1_inlined2 in -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 66390 "parsing/parser.ml" +# 66516 "parsing/parser.ml" in let _3 = @@ -66395,16 +66521,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66401 "parsing/parser.ml" +# 66527 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3627 "parsing/parser.mly" +# 3634 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_type (_3, @@ -66414,7 +66540,7 @@ module Tables = struct ~manifest:_5 ~priv:_4 ~loc:(make_loc _sloc))) ) -# 66418 "parsing/parser.ml" +# 66544 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66469,9 +66595,9 @@ module Tables = struct let _5 = let _1 = _1_inlined2 in -# 3712 "parsing/parser.mly" +# 3721 "parsing/parser.mly" ( _1 ) -# 66475 "parsing/parser.ml" +# 66601 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -66481,16 +66607,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66487 "parsing/parser.ml" +# 66613 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3640 "parsing/parser.mly" +# 3647 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_typesubst (_3, @@ -66498,7 +66624,7 @@ module Tables = struct ~params:_2 ~manifest:_5 ~loc:(make_loc _sloc))) ) -# 66502 "parsing/parser.ml" +# 66628 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66549,9 +66675,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66555 "parsing/parser.ml" +# 66681 "parsing/parser.ml" in let _2 = @@ -66560,15 +66686,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66566 "parsing/parser.ml" +# 66692 "parsing/parser.ml" in ( -# 3648 "parsing/parser.mly" +# 3655 "parsing/parser.mly" ( Pwith_module (_2, _4) ) -# 66572 "parsing/parser.ml" +# 66698 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66619,9 +66745,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66625 "parsing/parser.ml" +# 66751 "parsing/parser.ml" in let _2 = @@ -66630,15 +66756,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66636 "parsing/parser.ml" +# 66762 "parsing/parser.ml" in ( -# 3650 "parsing/parser.mly" +# 3657 "parsing/parser.mly" ( Pwith_modsubst (_2, _4) ) -# 66642 "parsing/parser.ml" +# 66768 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66696,15 +66822,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66702 "parsing/parser.ml" +# 66828 "parsing/parser.ml" in ( -# 3652 "parsing/parser.mly" +# 3660 "parsing/parser.mly" ( Pwith_modtype (l, rhs) ) -# 66708 "parsing/parser.ml" +# 66834 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66762,15 +66888,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1012 "parsing/parser.mly" +# 1014 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 66768 "parsing/parser.ml" +# 66894 "parsing/parser.ml" in ( -# 3654 "parsing/parser.mly" +# 3663 "parsing/parser.mly" ( Pwith_modtypesubst (l, rhs) ) -# 66774 "parsing/parser.ml" +# 66900 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -66794,9 +66920,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3657 "parsing/parser.mly" +# 3666 "parsing/parser.mly" ( Public ) -# 66800 "parsing/parser.ml" +# 66926 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -66826,9 +66952,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3658 "parsing/parser.mly" +# 3667 "parsing/parser.mly" ( Private ) -# 66832 "parsing/parser.ml" +# 66958 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -67122,7 +67248,7 @@ module Tables = struct Obj.repr (_v : # 876 "parsing/parser.mly" (string) -# 67126 "parsing/parser.ml" +# 67252 "parsing/parser.ml" ) | TYPE -> Obj.repr () @@ -67142,7 +67268,7 @@ module Tables = struct Obj.repr (_v : # 863 "parsing/parser.mly" (string * Location.t * string option) -# 67146 "parsing/parser.ml" +# 67272 "parsing/parser.ml" ) | STAR -> Obj.repr () @@ -67164,13 +67290,13 @@ module Tables = struct Obj.repr (_v : # 867 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 67168 "parsing/parser.ml" +# 67294 "parsing/parser.ml" ) | QUOTED_STRING_EXPR _v -> Obj.repr (_v : # 865 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 67174 "parsing/parser.ml" +# 67300 "parsing/parser.ml" ) | QUOTE -> Obj.repr () @@ -67182,7 +67308,7 @@ module Tables = struct Obj.repr (_v : # 849 "parsing/parser.mly" (string) -# 67186 "parsing/parser.ml" +# 67312 "parsing/parser.ml" ) | PLUSEQ -> Obj.repr () @@ -67198,7 +67324,7 @@ module Tables = struct Obj.repr (_v : # 842 "parsing/parser.mly" (string) -# 67202 "parsing/parser.ml" +# 67328 "parsing/parser.ml" ) | OPEN -> Obj.repr () @@ -67236,13 +67362,13 @@ module Tables = struct Obj.repr (_v : # 825 "parsing/parser.mly" (string) -# 67240 "parsing/parser.ml" +# 67366 "parsing/parser.ml" ) | LETOP _v -> Obj.repr (_v : # 807 "parsing/parser.mly" (string) -# 67246 "parsing/parser.ml" +# 67372 "parsing/parser.ml" ) | LET -> Obj.repr () @@ -67278,13 +67404,13 @@ module Tables = struct Obj.repr (_v : # 812 "parsing/parser.mly" (string) -# 67282 "parsing/parser.ml" +# 67408 "parsing/parser.ml" ) | INT _v -> Obj.repr (_v : # 811 "parsing/parser.mly" (string * char option) -# 67288 "parsing/parser.ml" +# 67414 "parsing/parser.ml" ) | INITIALIZER -> Obj.repr () @@ -67294,31 +67420,31 @@ module Tables = struct Obj.repr (_v : # 805 "parsing/parser.mly" (string) -# 67298 "parsing/parser.ml" +# 67424 "parsing/parser.ml" ) | INFIXOP3 _v -> Obj.repr (_v : # 804 "parsing/parser.mly" (string) -# 67304 "parsing/parser.ml" +# 67430 "parsing/parser.ml" ) | INFIXOP2 _v -> Obj.repr (_v : # 803 "parsing/parser.mly" (string) -# 67310 "parsing/parser.ml" +# 67436 "parsing/parser.ml" ) | INFIXOP1 _v -> Obj.repr (_v : # 802 "parsing/parser.mly" (string) -# 67316 "parsing/parser.ml" +# 67442 "parsing/parser.ml" ) | INFIXOP0 _v -> Obj.repr (_v : # 801 "parsing/parser.mly" (string) -# 67322 "parsing/parser.ml" +# 67448 "parsing/parser.ml" ) | INCLUDE -> Obj.repr () @@ -67330,7 +67456,7 @@ module Tables = struct Obj.repr (_v : # 860 "parsing/parser.mly" (string) -# 67334 "parsing/parser.ml" +# 67460 "parsing/parser.ml" ) | HASH -> Obj.repr () @@ -67352,7 +67478,7 @@ module Tables = struct Obj.repr (_v : # 790 "parsing/parser.mly" (string * char option) -# 67356 "parsing/parser.ml" +# 67482 "parsing/parser.ml" ) | FALSE -> Obj.repr () @@ -67378,7 +67504,7 @@ module Tables = struct Obj.repr (_v : # 806 "parsing/parser.mly" (string) -# 67382 "parsing/parser.ml" +# 67508 "parsing/parser.ml" ) | DOTDOT -> Obj.repr () @@ -67390,7 +67516,7 @@ module Tables = struct Obj.repr (_v : # 884 "parsing/parser.mly" (Docstrings.docstring) -# 67394 "parsing/parser.ml" +# 67520 "parsing/parser.ml" ) | DO -> Obj.repr () @@ -67400,7 +67526,7 @@ module Tables = struct Obj.repr (_v : # 883 "parsing/parser.mly" (string * Location.t) -# 67404 "parsing/parser.ml" +# 67530 "parsing/parser.ml" ) | COMMA -> Obj.repr () @@ -67418,7 +67544,7 @@ module Tables = struct Obj.repr (_v : # 769 "parsing/parser.mly" (char) -# 67422 "parsing/parser.ml" +# 67548 "parsing/parser.ml" ) | BEGIN -> Obj.repr () @@ -67440,7 +67566,7 @@ module Tables = struct Obj.repr (_v : # 808 "parsing/parser.mly" (string) -# 67444 "parsing/parser.ml" +# 67570 "parsing/parser.ml" ) | AND -> Obj.repr () @@ -67450,14 +67576,14 @@ module Tables = struct Obj.repr () let default_reduction = - "\000\000\000\000\000\000\003\180\003\179\003\178\003\177\003\176\003\130\003\175\003\174\003\173\003\172\003\171\003\170\003\169\003\168\003\167\003\166\003\165\003\164\003\163\003\162\003\161\003\160\003\159\003\158\003\157\003\129\003\156\003\155\003\154\003\153\003\152\003\151\003\150\003\149\003\148\003\147\003\146\003\145\003\144\003\143\003\142\003\141\003\140\003\139\003\138\003\137\003\136\003\135\003\134\003\133\003\132\003\131\000\000\000\000\000\"\000\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\234\002#\002\014\002 \002\031\002\030\002$\002(\000\000\003\235\002\"\002!\002\015\002&\002\029\002\028\002\027\002\026\002\025\002\023\002'\002%\000\000\000\000\000\000\001\023\000\000\000\000\002\018\000\000\000\000\000\000\002\020\000\000\000\000\000\000\002\022\002,\002)\002\024\002\016\002*\002+\000\000\003\233\003\232\003\236\000\000\000\000\000 \001\180\000\140\000\000\001\019\001\020\000\000\000\000\000\000\002E\002D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\223\000\000\000\000\000\000\000\000\000\000\003\229\000\000\003\224\000\000\000\000\003\226\000\000\003\228\000\000\003\225\003\227\000\000\003\219\000\000\003\218\003\214\002\222\000\000\003\217\000\000\002\223\000\000\000\000\000\000\000\000\000c\000\000\000\031\000\000\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\192\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\005\000\000\000\000\000^\000\000\001\026\000\000\000\000\000\000\000\000\000\000\003o\000\000\000\000\000\000\000\000\000\000\0020\000\000\000\000\000|\000\000\000\000\000\000\001\178\000\000\000\000\001\198\000\000\001\197\000\000\001\181\001\196\000\000\001\179\000[\000\027\000\000\000\000\001\244\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029\000\026\003\213\000\000\000s\000\000\000\000\000\000\000\018\000t\000\143\000u\000\023\000\000\000v\000r\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\030\000\000\000\000\000\000\002\210\000\000\000\000\000\000\000\000\000\251\000\000\000\000\000\000\000\000\000\000\000\252\001\000\002\232\002\218\000\000\000y\000\000\002\219\000\000\000\000\002-\000\000\000\000\000\000\000\000\003\191\000\000\001u\000\000\003\192\000\000\000\000\000x\000\000\000\000\000\000\000z\000\000\000{\000\000\000}\000\000\000\000\000~\002\208\002\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001<\001;\000\000\003\019\003\020\000\000\003\017\003\018\000\000\000\000\000\000\000\000\000\000\001\217\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\230\000\000\000\000\000\000\000\000\001\190\000\000\000\000\001\193\001\191\001\199\001\"\000\000\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\216\000\000\000\000\000\000\000\000\000\000\001\229\000\000\000\000\000\000\001\189\001\236\001\188\002\203\001\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\216\000\000\000\000\002\217\002\204\000\000\001\006\000\000\000\000\000\000\000\000\003\127\003n\000\000\000\000\000\000\000`\000\000\000\000\003\022\003\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000\000\003t\000_\000b\000]\003i\003\237\003j\002k\003l\000\000\000\000\003q\003\016\003s\000\000\000\000\000\000\003z\003w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0014\0013\000\000\0012\003\128\003r\000j\000\000\000\000\000\000\000\000\002g\000\000\000\000\002f\000\000\001S\002^\002j\002]\002a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001,\001+\000\000\001*\002\188\000\000\000\000\002b\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\002i\000\000\000i\000\000\003{\003k\000\000\001=\000\000\000\000\000\000\000\000\000\000\0010\001/\000\000\001.\002\189\000\000\000\000\003~\000\000\003}\003|\000\000\002d\000\000\000\000\002`\002_\002h\002e\002\190\000\000\000\000\000h\000\000\003y\003x\000\000\003v\000\000\003\024\003\023\000\000\000\000\002\245\003u\000\000\000\000\000\000\000\000\0022\001\144\001\145\003\026\000\000\003\027\003\025\000\000\001:\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\0017\000\000\0016\002\191\000\000\000\000\000;\000\000\000\000\000<\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\017\000\016\000\000\000\000\000\000\000:\0036\003\190\003\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\001P\000\000\001O\002\198\001T\000\000\000\000\002r\000\000\002m\002n\002q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\001@\000\000\001?\002\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\001L\000\000\001K\002\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001I\001H\000\000\001G\002\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\003c\003d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\140\000\000\000\000\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003<\001\194\003A\003?\000\000\000\000\000\000\003L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\000\000\000\000\001\215\000\000\002I\002H\000\000\000\000\002G\002F\001\214\001\212\000\000\001\216\000\000\000\000\003^\000\000\003]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002v\000\000\000\000\000\000\001c\000\000\000\000\003a\002u\003b\000\000\000\000\000\000\000\243\000\000\000\000\000\000\000\000\000\000\003h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003g\003e\003f\000\244\000\000\002\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\000\000\000\000\002\171\002\170\000\000\000\000\000\000\003I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\238\003K\003>\003=\000\000\000\000\000\000\000\000\000\212\002\211\000\000\000\000\000\000\000\000\000\000\001&\001%\000\000\001'\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\239\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\000\215\002\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\214\000\213\000\000\000\000\000\000\000\249\000\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\166\002\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001X\001W\000\000\002C\000\000\000\000\000\148\003\183\002\201\000\000\000\000\000\000\000\000\001\\\000\000\000\000\001[\000\000\001R\000\000\000\000\000\000\000\000\000\000\001E\001D\000\000\001C\002\195\000\000\000\000\002t\000\000\000\000\002p\002o\001U\000\000\000\000\001{\000\020\001^\000\000\000\000\000\000\002\238\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\206\002\205\000\211\000\000\000\127\000\128\000\000\000\000\000\000\000\000\000\164\000\163\000\000\003\031\000\000\000\000\003!\000\000\000\000\003 \000\000\000\000\000\000\000\000\003#\000\000\000\000\003'\000\000\000\000\003%\003E\000\000\000\000\000\000\000\000\000\000\000\151\000\000\000\000\001\162\000\000\001\163\001\161\002\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\"\000\000\000\000\003&\000\000\000\000\003$\000\000\000\000\000\000\000\000\000\000\002\176\002\175\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001f\000\000\000\000\001g\000\000\000\000\000\216\000\000\001i\001h\000\000\000\000\003M\003F\000\000\003V\000\000\003W\003U\000\000\003[\000\000\003\\\003Z\000\000\000\000\003H\003G\000\000\000\000\000\000\002\141\000\000\000\000\002\142\000\000\000\000\000\000\000\000\002\248\000\000\003Q\003P\000\000\000\000\000\000\001\195\000\000\0034\000\000\0035\0033\000\000\003O\003N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\003D\000\000\003C\003B\000\000\003Y\003X\000\000\000\000\000\000\000\000\002P\000\000\002N\000\000\000\000\002L\000\000\000\000\000\000\000\000\002O\000\000\002M\000\000\000\000\002K\000\000\000\000\000\000\000\000\002J\000\000\002\011\000\000\000\000\000\000\002\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\001\203\001\154\000\000\000\000\001\159\000\000\000\000\000\000\000\000\000\000\002{\000\000\000\000\000\000\000\000\000\000\000\000\003\187\000\000\000\000\000\000\000\000\000\000\000\000\002\130\000\000\000\000\000\000\000\000\000\000\000\000\001\248\000\000\002\131\000\000\002\129\000\000\000\000\000\000\000d\000\000\000\000\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\028\000\000\000\000\000n\000\000\001\031\001\029\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\251\000f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\220\000\000\001\219\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001s\003\t\000\000\000\000\001\205\000\000\003\007\000\000\000\000\000\000\003\006\000\000\000\000\001\206\000\000\000\000\000\000\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\246\000\000\000\000\000\000\000\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\000\000\001\243\000\000\001\242\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\002\138\000\000\002\137\000\000\000\000\000\000\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000H\000F\000\000\000K\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000J\000I\000\000\000D\000E\000\000\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001o\000Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W\000\000\000Y\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001m\003\014\002\255\000\000\003\005\003\000\003\012\003\011\003\n\003\b\001~\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\199\000\000\000\000\001w\003\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\003\000\000\002\007\001\255\000\000\000\000\000\000\001\r\000\000\000\000\002\147\002\199\000\000\000\000\001y\002\145\002\146\000\000\000\000\000\000\000\000\000\000\002\006\002\002\001\254\000\000\000\000\001\014\000\000\000\000\002\005\002\001\001\253\001\251\003\002\002\254\003\015\001}\002x\002\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\000\000\000\000\001\175\001\173\000\000\0000\000\000\000\000\003\252\000\000\003\251\000\000\000\000\000\000\001\171\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\176\000\000\000\000\001\174\001\172\000\000\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000,\000\000\000\000\000P\000\000\000*\001a\000\000\0009\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001_\000\000\000O\000N\000\000\000\000\000T\000S\000\000\000\000\0024\000\000\000.\000\000\000\000\000\000\000-\000\000\000\000\000\000\0001\000\000\000R\000U\000\000\0003\0004\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001k\001\156\001\149\000\000\000\000\000\000\000\000\000\000\000\000\001]\001\153\001\158\001\148\001\160\001\155\003\188\001\130\000\000\000\000\001\146\000\000\001\150\001\147\001\157\002w\000\000\000\000\003\185\000#\003\184\000\000\000\000\000\144\000\000\001\025\000\000\000\000\000\150\002A\000\000\003_\003`\001d\000\000\000\000\000\000\000\000\000\000\003T\000\000\003S\003R\003@\000\000\000\000\000\000\000\000\0037\000\000\0039\000\000\0038\000\000\003\029\003\028\000\000\003\030\000\000\000\000\000\000\000\000\0032\0031\003\241\000\000\000\000\003\243\000\000\000/\000\000\000\000\003\249\000\000\003\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\240\000\000\000\000\003\242\000\000\003;\003:\000\000\000\000\001\129\001\128\000\000\000\139\000\000\001\228\001\227\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\001\170\001\164\000\000\000\000\001\165\002\t\000\000\002\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\186\002\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\154\000\000\000\000\002\128\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\001\152\002\152\002\153\002\148\002\150\002\149\002\151\000\000\000\000\000\000\000\142\000\000\000\000\002\199\000\000\001\017\000\000\000\000\000\000\000\000\001\151\000\000\001\208\001\207\000\000\000\000\000\000\000\000\001\003\000\000\000\000\000\000\000\000\000\000\000\253\000\000\000\000\000\254\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\000\000\255\000\000\000\000\002\004\002\000\000\000\001\252\003\212\000\000\002\199\000\000\001\016\000\000\000\000\000\000\000\000\003\004\002\156\002\154\002\155\000\000\000\000\000\000\002\199\000\000\001\015\000\000\000\000\000\000\000\000\003\003\000\000\001\222\001\221\000\000\000\000\000\000\001\004\000\000\003\244\000\000\000$\000\000\000\000\000\000\000\000\000\162\000\161\000\000\001\021\000\001\000\000\000\000\001\024\000\002\000\000\000\000\000\000\001\183\001\184\000\003\000\000\000\000\000\000\000\000\001\186\001\187\001\185\000\021\001\182\000\022\000\000\002Q\000\000\000\004\000\000\002R\000\000\000\005\000\000\002S\000\000\000\000\002T\000\006\000\000\000\007\000\000\002U\000\000\000\b\000\000\002V\000\000\000\t\000\000\002W\000\000\000\n\000\000\002X\000\000\000\011\000\000\002Y\000\000\000\000\002Z\000\012\000\000\000\000\002[\000\r\000\000\000\000\000\000\003\199\003\194\003\195\003\198\003\196\000\000\003\203\000\014\000\000\003\202\000\000\001\136\000\000\000\000\003\200\000\000\003\201\000\000\000\000\000\000\000\000\001\140\001\141\000\000\000\000\001\139\001\138\000\015\000\000\000\000\000\000\003\231\000\000\003\230" + "\000\000\000\000\000\000\003\183\003\182\003\181\003\180\003\179\003\133\003\178\003\177\003\176\003\175\003\174\003\173\003\172\003\171\003\170\003\169\003\168\003\167\003\166\003\165\003\164\003\163\003\162\003\161\003\160\003\132\003\159\003\158\003\157\003\156\003\155\003\154\003\153\003\152\003\151\003\150\003\149\003\148\003\147\003\146\003\145\003\144\003\143\003\142\003\141\003\140\003\139\003\138\003\137\003\136\003\135\003\134\000\000\000\000\000\"\000\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\237\002%\002\016\002\"\002!\002 \002&\002*\000\000\003\238\002$\002#\002\017\002(\002\031\002\030\002\029\002\028\002\027\002\025\002)\002'\000\000\000\000\000\000\001\022\000\000\000\000\002\020\000\000\000\000\000\000\002\022\000\000\000\000\000\000\002\024\002.\002+\002\026\002\018\002,\002-\000\000\003\236\003\235\003\239\000\000\000\000\000 \001\181\000\140\000\000\001\018\001\019\000\000\000\000\000\000\002G\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\225\000\000\000\000\000\000\000\000\000\000\003\232\000\000\003\227\000\000\000\000\003\229\000\000\003\231\000\000\003\228\003\230\000\000\003\222\000\000\003\221\003\217\002\224\000\000\003\220\000\000\002\225\000\000\000\000\000\000\000\000\000c\000\000\000\031\000\000\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\001\193\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\213\000\000\000\000\000\000\000\000\000\000\000\000\001\220\000\000\001\004\000\000\000\000\000^\000\000\001\025\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\0022\000\000\000\000\000|\000\000\000\000\000\000\001\179\000\000\000\000\001\199\000\000\001\198\000\000\001\182\001\197\000\000\001\180\000[\000\027\000\000\000\000\001\246\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029\000\026\003\216\000\000\000s\000\000\000\000\000\000\000\018\000t\000\143\000u\000\023\000\000\000v\000r\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\030\000\000\000\000\000\000\002\212\000\000\000\000\000\000\000\000\000\250\000\000\000\000\000\000\000\000\000\000\000\251\000\255\002\234\002\220\000\000\000y\000\000\002\221\000\000\000\000\002/\000\000\000\000\000\000\000\000\003\194\000\000\001v\000\000\003\195\000\000\000\000\000x\000\000\000\000\000\000\000z\000\000\000{\000\000\000}\000\000\000\000\000~\002\210\002\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001=\001<\000\000\003\021\003\022\000\000\003\019\003\020\000\000\000\000\000\000\000\000\000\000\001\219\000\000\003p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\232\000\000\000\000\000\000\000\000\001\191\000\000\000\000\001\194\001\192\001\200\001!\000\000\000\000\004\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\219\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\231\000\000\000\000\000\000\001\190\001\238\001\189\002\205\001\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\218\000\000\000\000\002\219\002\206\000\000\001\005\000\000\000\000\000\000\000\000\003\130\003q\000\000\000\000\000\000\000`\000\000\000\000\003\024\003\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000\000\003w\000_\000b\000]\003l\003\240\003m\002m\003o\000\000\000\000\003t\003\018\003v\000\000\000\000\000\000\003}\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0015\0014\000\000\0013\003\131\003u\000j\000\000\000\000\000\000\000\000\002i\000\000\000\000\002h\000\000\001T\002`\002l\002_\002c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\001,\000\000\001+\002\190\000\000\000\000\002d\000\000\000\000\000\000\000\000\000\000\001\248\000\000\000\000\002k\000\000\000i\000\000\003~\003n\000\000\001>\000\000\000\000\000\000\000\000\000\000\0011\0010\000\000\001/\002\191\000\000\000\000\003\129\000\000\003\128\003\127\000\000\002f\000\000\000\000\002b\002a\002j\002g\002\192\000\000\000\000\000h\000\000\003|\003{\000\000\003y\000\000\003\026\003\025\000\000\000\000\002\247\003x\000\000\000\000\000\000\000\000\0024\001\145\001\146\003\028\000\000\003\029\003\027\000\000\001;\002\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0019\0018\000\000\0017\002\193\000\000\000\000\000;\000\000\000\000\000<\000\000\000\000\000\000\000\000\001\240\000\000\000\000\000\000\000\017\000\016\000\000\000\000\000\000\000:\0038\003\193\003\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\001Q\000\000\001P\002\200\001U\000\000\000\000\002t\000\000\002o\002p\002s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\001A\000\000\001@\002\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001N\001M\000\000\001L\002\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001J\001I\000\000\001H\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\003f\003g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\142\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003>\001\195\003C\003A\000\000\000\000\000\000\003N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\212\000\000\000\000\001\216\000\000\002K\002J\000\000\000\000\002I\002H\001\215\001\213\000\000\001\217\000\000\000\000\003`\000\000\003_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002x\000\000\000\000\000\000\001d\000\000\000\000\003d\002w\003e\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\003k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003j\003h\003i\000\243\000\000\002\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\212\000\000\000\000\000\000\000\000\002\173\002\172\000\000\000\000\000\000\003K\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\241\003M\003@\003?\000\000\000\000\000\000\000\000\000\212\002\213\000\000\000\000\001%\000\000\000\000\000\000\001&\001$\000\000\001(\001'\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\163\002\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\215\000\000\000\000\000\000\000\000\000\215\002\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\214\000\213\000\000\000\000\000\000\000\248\000\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\168\002\167\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\185\000\000\000\000\000\000\000\000\000\000\000\000\001[\000\000\000\000\000\000\000\000\001Z\000\000\000\000\001Y\001X\000\000\002E\000\000\000\000\000\148\003\186\002\203\000\000\000\000\000\000\000\000\001]\000\000\000\000\001\\\000\000\001S\000\000\000\000\000\000\000\000\000\000\001F\001E\000\000\001D\002\197\000\000\000\000\002v\000\000\000\000\002r\002q\001V\000\000\000\000\001|\000\020\001_\000\000\000\000\000\000\002\240\000\000\003-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\208\002\207\000\211\000\000\000\127\000\128\000\000\000\000\000\000\000\000\000\164\000\163\000\000\003!\000\000\000\000\003#\000\000\000\000\003\"\000\000\000\000\000\000\000\000\003%\000\000\000\000\003)\000\000\000\000\003'\003G\000\000\000\000\000\000\000\000\000\000\000\151\000\000\000\000\001\163\000\000\001\164\001\162\002\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003$\000\000\000\000\003(\000\000\000\000\003&\000\000\000\000\000\000\000\000\000\000\002\178\002\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001g\000\000\000\000\001h\000\000\000\000\000\216\000\000\001j\001i\000\000\000\000\003O\003H\000\000\003X\000\000\003Y\003W\000\000\003]\000\000\003^\003\\\000\000\000\000\003J\003I\000\000\000\000\000\000\002\143\000\000\000\000\002\144\000\000\000\000\000\000\000\000\002\250\000\000\003S\003R\000\000\000\000\000\000\001\196\000\000\0036\000\000\0037\0035\000\000\003Q\003P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\244\003F\000\000\003E\003D\000\000\003[\003Z\000\000\000\000\000\000\000\000\002R\000\000\002P\000\000\000\000\002N\000\000\000\000\000\000\000\000\002Q\000\000\002O\000\000\000\000\002M\000\000\000\000\000\000\000\000\002L\000\000\002\r\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001r\000\000\001\204\001\155\000\000\000\000\001\160\000\000\000\000\000\000\000\000\000\000\002}\000\000\000\000\000\000\000\000\000\000\000\000\003\190\000\000\000\000\000\000\000\000\000\000\000\000\002\132\000\000\000\000\000\000\000\000\000\000\000\000\001\250\000\000\002\133\000\000\002\131\000\000\000\000\000\000\000d\000\000\000\000\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\027\000\000\000\000\000n\000\000\001\030\001\028\000\000\000\000\000\000\001\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\253\000f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\000\000\000\000\001\222\000\000\001\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001t\003\011\000\000\000\000\001\206\000\000\003\t\000\000\000\000\000\000\003\b\000\000\000\000\001\207\000\000\000\000\000\000\000\000\003\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\249\000\000\000\000\000\000\000\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\000\000\001\245\000\000\001\244\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\002\140\000\000\002\139\000\000\000\000\000\000\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000H\000F\000\000\000K\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000J\000I\000\000\000D\000E\000\000\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001p\000Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W\000\000\000Y\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001n\003\016\003\001\000\000\003\007\003\002\003\014\003\r\003\012\003\n\001\127\000\000\002\255\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\001x\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\002\t\002\001\000\000\000\000\000\000\001\012\000\000\000\000\002\149\002\201\000\000\000\000\001z\002\147\002\148\000\000\000\000\000\000\000\000\000\000\002\b\002\004\002\000\000\000\000\000\001\r\000\000\000\000\002\007\002\003\001\255\001\253\003\004\003\000\003\017\001~\002z\002\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\176\001\174\000\000\0000\000\000\000\000\003\255\000\000\003\254\000\000\000\000\000\000\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\000\000\000\000\001\175\001\173\000\000\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000,\000\000\000\000\000P\000\000\000*\001b\000\000\0009\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\000O\000N\000\000\000\000\000T\000S\000\000\000\000\0026\000\000\000.\000\000\000\000\000\000\000-\000\000\000\000\000\000\0001\000\000\000R\000U\000\000\0003\0004\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001\157\001\150\000\000\000\000\000\000\000\000\000\000\000\000\001^\001\154\001\159\001\149\001\161\001\156\003\191\001\131\000\000\000\000\001\147\000\000\001\151\001\148\001\158\002y\000\000\000\000\003\188\000#\003\187\000\000\000\000\000\144\000\000\001\024\000\000\000\000\000\150\002C\000\000\003b\003c\001e\000\000\000\000\000\000\000\000\000\000\003V\000\000\003U\003T\003B\000\000\000\000\000\000\000\000\0039\000\000\003;\000\000\003:\000\000\003\031\003\030\000\000\003 \000\000\000\000\000\000\000\000\0034\0033\003\244\000\000\000\000\003\246\000\000\000/\000\000\000\000\003\252\000\000\003\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\243\000\000\000\000\003\245\000\000\003=\003<\000\000\000\000\001\130\001\129\000\000\000\139\000\000\001\230\001\229\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\165\000\000\000\000\001\166\002\011\000\000\002\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\188\002\187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\183\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\154\000\000\000\000\002\130\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\001\153\002\154\002\155\002\150\002\152\002\151\002\153\000\000\000\000\000\000\000\142\000\000\000\000\002\201\000\000\001\016\000\000\000\000\000\000\000\000\001\152\000\000\001\209\001\208\000\000\000\000\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000\253\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\002\006\002\002\000\000\001\254\003\215\000\000\002\201\000\000\001\015\000\000\000\000\000\000\000\000\003\006\002\158\002\156\002\157\000\000\000\000\000\000\002\201\000\000\001\014\000\000\000\000\000\000\000\000\003\005\000\000\001\224\001\223\000\000\000\000\000\000\001\003\000\000\003\247\000\000\000$\000\000\000\000\000\000\000\000\000\162\000\161\000\000\001\020\000\001\000\000\000\000\001\023\000\002\000\000\000\000\000\000\001\184\001\185\000\003\000\000\000\000\000\000\000\000\001\187\001\188\001\186\000\021\001\183\000\022\000\000\002S\000\000\000\004\000\000\002T\000\000\000\005\000\000\002U\000\000\000\000\002V\000\006\000\000\000\007\000\000\002W\000\000\000\b\000\000\002X\000\000\000\t\000\000\002Y\000\000\000\n\000\000\002Z\000\000\000\011\000\000\002[\000\000\000\000\002\\\000\012\000\000\000\000\002]\000\r\000\000\000\000\000\000\003\202\003\197\003\198\003\201\003\199\000\000\003\206\000\014\000\000\003\205\000\000\001\137\000\000\000\000\003\203\000\000\003\204\000\000\000\000\000\000\000\000\001\141\001\142\000\000\000\000\001\140\001\139\000\015\000\000\000\000\000\000\003\234\000\000\003\233" let[@inline] default_reduction = fun i -> MenhirLib.PackedIntArray.get16 default_reduction i let error = - "'\233 \197\138\173\190f~\002\129\252\128\0008\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235f\245\155\175\190f\255\146\163\252Q\016y\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\187\160\b2\nC\129\131$\014\193\022!\020\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\003 \004\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128 \128\b \000B\128\002\000\012@\000 \000\132\128 \128\b \000B\000\002\000\012@\000 \000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \024\002\000\001\000\132\128\"\128\012 \018C\128\003 \012\193\016a\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000p\016\000\024\184P\000 \016\002\000\001\000\003\000\bp\016 \024\184@\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\167\233 \197\138\173\190f\254\002\129\252@\0008\224\167\233 \197\138\173\190f~\002\129\252@\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\003\002H@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\167\233\"\197\138\173\190f~\002\129\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\132\000\000\128@\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\000p\016\000\024\184@\000 \000\000\000\001@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\002C\129\131$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\024@\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128\187\128\b2\002C\129\131$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\197\128\187\128\b2\nC\129\131$\014\192\022!\022\197\128\187\128\b2\nC\129\131$\014\192\022!\022\196\128;\128\b2\002C\129\131$\014\192\022!\020\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\000\128\000\004\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\002\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235w\253\155\239\190\255\255\147\167\252\210\0169\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\004\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\136G\224,\028\164^|d6\020\001\146\203\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\131\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\003\000\000x\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \020\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\018 \020\196\128*\128\b0\002C\128\003 \014\192\018 \004\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\018 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\002\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002 \004\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\020@\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\192\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\214\000 2\130\006\213P\000\001\000\000\128\004\000\000\002\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\222\000 6\145\006\213P\001\000\000\000\000\000\016\004P\000\000\000\000\000\000\000\131)\b@\128\004\024$^\000 4\016\000\144@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027@\128\020\024$\222\000 6\144\004\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\147)\027@\128\020\024$\222\000 6\144\004\213P\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\000\128\000\000\000\000\004\133\016\131)\002@\128\004\024$^\000 4\016\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\000\000\004\129\016\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\128\000\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\163i\136G\226\173\190\164~|\197\242\004\001\154\235\129!\bD\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\028\224\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000P\144\004\024$\214\001 2\000\004\209X\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\128*\128\b\"\002C\129\131 \014\192\016 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \014\192\016 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\007\169\004\192\200$\024f\222\000 <\000\0000@\007\169\004\192\136$\024f\222\000 <\000\0000@\007\169\004\192\136$\024f^\000 <\000\0000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@\000\016 \128\000\002\000\000\000\000\128\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\002@@\000\000\016 \000\000\002\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\b\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000D\002\129\152$r\000\0000\000\000\024\192\193)\017T\018\129\152$v\000`2\005\002X\192#i\000E\194\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$~\000\129\240@\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\163i\136G\226\173\190\164~|\197\242\004\001\154\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002`\004\005\002H@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000@\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\131)\b@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000`\000\005\004\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\000\000\000\016\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000P\208\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\002\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\b\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\131)\136G\224,\028\164^|d6\020\001\146\203\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\024$V\000 2\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000@\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\001\000\000\000\000\016\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\002\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\027\000\000\000\000\000\000\000\000\000\000\004\005\000\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\253\187\199\234\191\254\231\255\255\173\254\232\183\255\239}\246D\b/\226*\000\t\131\131\220x\176(4#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$\222\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\135\169\"\208\152$\026g\214\003 >\192\006\241T#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b\"\002C\001\131 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\155\003\224\012\000\128\128|\004\002\000\005\134\003\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\197\189\187\215\250\191\218\231\247\255,>\232\183\255\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\001\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129!\bD\002\129\152$r\000\0000\000\000\024\192\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192A)\000T\018\129\152$v\000`0\005\000\024\192A)\000T\018\129\152$v\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\002@\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A)\000T\018\129\152$v\000`0\005\000\024\192\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\193)\017T\018\129\152$v\000`2\005\002X\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\017\000\000\000\000\000\000\000\b\000\000\004\001\000\128\000\145\003\224\012\000\128\128|\012\002\000\005\130\003\128\000\016\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\b\000\000\000\000\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\128\000\136\003\224\012\000\128\128|\004\002\000\007\194\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \014\192\000 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\002\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\002\000\000\000\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000@\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\001\000\000\000\000\024\000\000\000\000\000\000\000\000\000\132\129\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000`\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\017\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\162\128\b \nC\128\003 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\003 \012\193\000!\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\132\128\"\128\b \002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\128\"\240\024 \024\250@\002 \012\000\000 \000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\014\192\001 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \000C\128\002\000\012\192\000`\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\000\000\128\000\002\016B\128\128\000\000@\016\000\000\132\000\000\128\000\002\016B\000\128\000\000@\016\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\n \192\000\000\000\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\131 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\131 \014\192\016 \004\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000`\004\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\002\000\000\000\000\000\128\000\000\000\000\004\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000 \004\133\128\170\128\b0\bC\128\002 \014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \000C\128\002\000\014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003 \000x\016\000\024\184P\000 \024\002\000\001\000\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\160\"\128\b \018C@\003 \028\192\016 \004\132\128\"\128\012 \002C\128\003 \012\192\016a\004\132\128\"\128\b \002C\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \014\192\016 \004\001 \000\b\000\000\016\000P\000\000\016\002\000\001\000\001 \000\000\000\000\016\000P\000\000\016\002\000\001\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \012\192\016a\004\132\128\"\128\b \002C\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\131)\136G\224,\028\164^|d6\020\001\146\203\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\128\000\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 \192\000\000\128\000\000\000\128\001\000\000@\002\000\026 \192\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003)\004@\200\004\024$\222\000 0\000\000\016@}\246D\b/\226*\000\t\131\131\220x\176(4\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\003)\000P\144\020\024$V\000 0\000\000\016@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\169*\212\026\163\154g\247\131 <\192\016x\212\133\169*\212\026\163\154g\247\131 <\192\016x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\003)\000P\144\004\024$V\000 2\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\003)\004@\192\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\132\128\"\128\b \002C\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\004\000\000\000\000\000\003\000\000`\000\000\024\184\192\000$\000\002\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \002C\000\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002 \004@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128\000\000\016\b\000\000\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\196\128\187\128\b2\002C\129\131$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\024\184P\000 \024\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \024\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \000B\000\002\000\012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\024\000@\000\000\016\000\000\000\000\128\000\136\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\000\128\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\005\161 \128\b \026B\002\002 \028\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002 \012\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002\000\012\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224'\233 \197\138\173\190f~\002\161\252\128\0008\224\004\128 \128\b \002B\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" + "'\233 \197\138\173\190f~\002\129\252\128\0008\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235f\245\155\175\190f\255\146\163\252Q\016y\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\187\160\b2\nC\129\131$\014\193\022!\020\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\003 \004\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128 \128\b \000B\128\002\000\012@\000 \000\132\128 \128\b \000B\000\002\000\012@\000 \000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \024\002\000\001\000\132\128\"\128\012 \018C\128\003 \012\193\016a\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000p\016\000\024\184P\000 \016\002\000\001\000\003\000\bp\016 \024\184@\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\167\233 \197\138\173\190f\254\002\129\252@\0008\224\167\233 \197\138\173\190f~\002\129\252@\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\003\002H@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\167\233\"\197\138\173\190f~\002\129\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\132\000\000\128@\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\000p\016\000\024\184@\000 \000\000\000\001@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\002C\129\131$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\024@\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128\187\128\b2\002C\129\131$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\131$\014\192\022!\022\197\128\187\128\b2\nC\129\131$\014\192\022!\022\197\128\187\128\b2\nC\129\131$\014\192\022!\022\196\128;\128\b2\002C\129\131$\014\192\022!\020\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\000\128\000\004\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\002\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235w\253\155\239\190\255\255\147\167\252\210\0169\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\004\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\136G\224,\028\164^|d6\020\001\146\203\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\131\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\003\000\000x\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \020\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\018 \020\196\128*\128\b0\002C\128\003 \014\192\018 \004\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\018 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\002\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002 \004\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\003 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\020@\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\192\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\214\000 2\130\006\213P\000\001\000\000\128\004\000\000\002\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\222\000 6\145\006\213P\001\000\000\000\000\000\016\004P\000\000\000\000\000\000\000\131)\b@\128\004\024$^\000 4\016\000\144@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027@\128\020\024$\222\000 6\144\004\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\147)\027@\128\020\024$\222\000 6\144\004\213P\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\000\128\000\000\000\000\004\133\016\131)\002@\128\004\024$^\000 4\016\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\000\000\004\129\016\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\128\000\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\163i\136G\226\173\190\164~|\197\242\004\001\154\235\131!\bD\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\028\224\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000P\144\004\024$\214\001 2\000\004\209X\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\128*\128\b\"\002C\129\131 \014\192\016 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \014\192\016 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\007\169\004\192\200$\024f\222\000 <\000\0000@\007\169\004\192\136$\024f\222\000 <\000\0000@\007\169\004\192\136$\024f^\000 <\000\0000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\002@@@\000\016 \128\000\002\000\000\000\000\128\003\002@@@\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\002@@\000\000\016 \000\000\002\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\b\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003!\000D\002\129\152$r\000\0000\000\000\024\192\195)\017T\018\129\152$v\000`2\005\002X\192#i\000E\194\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$~\000\129\240@\000\024\224\003!\000DB\129\152$\242\000\0000\000\000\024\192\003!\000D\002\129\152$\242\000\0000\000\000\024\192\003!\000D\002\129\152$r\000\0000\000\000\024\192\003!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\163i\136G\226\173\190\164~|\197\242\004\001\154\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\131\002@@@\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002`\004\007\002H@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000@\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\131)\b@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000`\000\005\004\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\199\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\000\000\000\016\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000P\208\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\002\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\b\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\131)\136G\224,\028\164^|d6\020\001\146\203\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\024$V\000 2\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000@\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\001\000\000\000\000\016\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\002\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\003!\000DB\129\152$\242\000\0000\000\000\024\192\003!\000D\002\129\152$\242\000\0000\000\000\024\192\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\218\231\247\255l>\237\183\255\207\002\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\199\189\187\215\250\191\218\231\247\255l>\237\183\255\223\003!\000D\002\129\152$r\000\0000\000\000\024\192\199\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\027\000\000\000\000\000\000\000\000\000\000\004\005\000\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\253\187\199\234\191\254\231\255\255\173\254\232\183\255\239}\246D\b/\226*\000\t\131\131\220x\176(4#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$\222\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\135\169\"\208\152$\026g\214\003 >\192\006\241T#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b\"\002C\001\131 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\155\003\224\012\000\128\128|\004\002\000\005\134\003\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\199\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\199\189\187\215\250\191\218\231\247\255l>\237\183\255\223\199\189\187\215\250\191\218\231\247\255,>\232\183\255\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\001\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\bD\002\129\152$r\000\0000\000\000\024\192\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192C)\000T\018\129\152$v\000`0\005\000\024\192C)\000T\018\129\152$v\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\002@\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C)\000T\018\129\152$v\000`0\005\000\024\192\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\195)\017T\018\129\152$v\000`2\005\002X\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\017\000\000\000\000\000\000\000\b\000\000\004\001\000\128\000\145\003\224\012\000\128\128|\012\002\000\005\130\003\128\000\016\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\b\000\000\000\000\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\128\000\136\003\224\012\000\128\128|\004\002\000\007\194\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \014\192\000 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\002\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\002\000\000\000\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\003\002@@@\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000@\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\001\000\000\000\000\024\000\000\000\000\000\000\000\000\000\132\129\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000`\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\017\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\162\128\b \nC\128\003 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\003 \012\193\000!\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\132\128\"\128\b \002C\128\003 \012\192\000 \000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\128\"\240\024 \024\250@\002 \012\000\000 \000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\014\192\001 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \000C\128\002\000\012\192\000`\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\000\000\128\000\002\016B\128\128\000\000@\016\000\000\132\000\000\128\000\002\016B\000\128\000\000@\016\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\n \192\000\000\000\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\131 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\131 \014\192\016 \004\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000`\004\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\002\000\000\000\000\000\128\000\000\000\000\004\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000 \004\133\128\170\128\b0\bC\128\002 \014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \000C\128\002\000\014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003 \000x\016\000\024\184P\000 \024\002\000\001\000\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\160\"\128\b \018C@\003 \028\192\016 \004\132\128\"\128\012 \002C\128\003 \012\192\016a\004\132\128\"\128\b \002C\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \014\192\016 \004\001 \000\b\000\000\016\000P\000\000\016\002\000\001\000\001 \000\000\000\000\016\000P\000\000\016\002\000\001\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \012\192\016a\004\132\128\"\128\b \002C\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\131)\136G\224,\028\164^|d6\020\001\146\203\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\128\000\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 \192\000\000\128\000\000\000\128\001\000\000@\002\000\026 \192\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003)\004@\200\004\024$\222\000 0\000\000\016@}\246D\b/\226*\000\t\131\131\220x\176(4\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\003)\000P\144\020\024$V\000 0\000\000\016@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\135\169*\212\026\163\154g\247\131 <\192\016x\212\135\169*\212\026\163\154g\247\131 <\192\016x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128*\128\b\"\002C\129\131 \012\192\016`\020\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000 \004\003)\000P\144\004\024$V\000 2\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\003)\004@\192\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\132\128\"\128\b \002C\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\002@@@\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \128\000\002\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\004\000\000\000\000\000\003\000\000`\000\000\024\184\192\000$\000\002\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\003 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\003 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \002C\000\003 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002 \004@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128\000\000\016\b\000\000\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\196\128\187\128\b2\002C\129\131$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\003 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\024\184P\000 \024\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \024\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \000B\000\002\000\012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\024\000@\000\000\016\000\000\000\000\128\000\136\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\000\128\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\005\161 \128\b \026B\002\002 \028\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002 \012\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002\000\012\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224'\233 \197\138\173\190f~\002\161\252\128\0008\224\004\128 \128\b \002B\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" let[@inline] error = fun i -> @@ -67471,14 +67597,14 @@ module Tables = struct 15 let action_displacement = - "|\214\022\236\130\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\246\130\136\000\000\000\000\020\000\130\136|\214\022\236\020\000\238\218\206x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\232\020l\015\230\000\000\016\164\001\136\000\000\020l\016\218\003\136\000\000\020l\017\006\005\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\244\000\000\000\000\000\000\016\148\186d\000\000\000\000\000\000\011V\000\000\000\000\145$\000\027\002:\000\000\000\000\186d\022\236\020\000\136\214\024\198\148\026\199$\007\190\000\000\020\000\194\216\022\236\020\000\135\030\000\000\000:\000\000\136\202\001\232\000\000\136\202\000\000\002l\000\000\000\000\007\030\000\000\011V\000\000\000\000\000\000\000\158\000\000\136\202\000\000\006\160\229N\242X\215.\000\000\011V\000\000\185\136\186d\000\000\142\140\023V\217\216\022\236\020\000\146\162\028\198\148\026\014:\014\026\020\000&\128\000\000\020\000|\214\000\000\022\236\020\000\136\202\136\202\011\014\229N\000\000\225\206\130\136|\214\022\236\020\000\000\000\nF\015>%\028\133\194\000\000\223\156\190\150\022\236\020\000\148\026}\142\000\000\199$\000\000\130\136|\214\000\000|\214\000\000\019\000\022\236\020\000\128\226\186:\000\000\011\142\015\180\015@\194\216\235\240\000\000\194\216\235\240\000\000\194\216\194\216\184j\000\000\006\254\244(\000\000\225\206\000\000\029\202\000\000\000\000\029\202\000\000\000\000\000\000\194\216\011V\000\000\000\000\189z\194\216\139\134\191\\\002\228}\000\184j\000\000\000\000\000\000\194\216\000\000\tf\029\202\190\150\000\000\000\000\000\000\000\000\000\000\003\228\000\000\000\000\173(\143\182\140\144\227\164\184j\184j\000\000\000\000\187\214\172\158\141\142\227\164\177\028\169\240\149\024\191\226\016\212\011V\000\000\000\000\001\228\011D\011V\000\000\194\216\011\228\016\226\194\216\000\000\003\228\194\216\133\222\016\252\194\216\000\000\000\000\000\000\000\000\011\\\000\000\194\216\000\000\020\000\230t\000\000\194\216\020\000\194\216&n\000\000\020\000\000\000z\184\000\000\242F\011\154\000\000\016\128\194\216\012\b\000\000\012\154\000\000\002J\000\000\000\000%\226\000\000\000\000\000\000\012\136\016\158\235\142\012\158\017 \016\190\194\216\140B\000\000\000\000\028F\000\000\000\000\030F\000\000\000\000\129\138\028F\244\182\020\000\020\194\000\000\001\"\000\000\148\026\020\000\0292\020\194\003:\148\026\0222\148\026\000\000\220\236\006x\136\202\182\026\000\000\003\228\028\226\000\000\000\000\000\000\000\000\003L\132\204\000\000\194\216\217\166\194\216\210\178\217\006\194\216\242F\194\216\214\170\000\000%\226\148\026\004\022\148\026\222r\000\000\004f\002\160\207\184\000\000\000\000\000\000\000\000\000\000\148\026\221\240\148\026\221n\193\\\184j\211\224\027\198\184j\209\174\000\000\220j\006x\000\000\000\000\145\172\000\000\0292\148\026\219\232z\024\000\000\000\000\030F\208\140\218x\000\000\182\026\007\006\000\000\000\000\031\028\194\216\133\222 \026\186:\022\236\020\000\186:\000\000\184j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\181\214{\226\000\000\000\000\000\000\134V\028\226\208\140\000\000\000\000\186:\0122\233\228\007J\012\170\012:\194\216\007\206\000\000\000\000\186:\000\000\000\000\000\000\000\000\022\236\020\000\186:\186:\000\000\012^\186:\000\000\186:\000\000\000\000\000\000\000\000\000\000\245\168\230\160\bF\rJ\012\228\194\216\007\170\000\000\000\000\186:\000\000\000\000\245\"\231.\000\000\244\214\187.\128\150\002\170\002\170\000\000\r\222\186:\000\000\014\002\000\000{\198\000\000\000\000\226\224\000\000\b\158\r\230\rp\194\216\b\170\000\000\000\000\186:\000\000\000\000\143~\190\150\000\000\004\136\000\000\000\000\230\018\000\000\246\242\238\218\000\000\000\000\000\000\000\000\000\000\246t\014\138\000\000\021D\000\000\000\000\208\140\000\000\b\160\000\000\000\000\145\172\214\n\000\000\000\000\140B\023\134\182\026\023\146\000\000\000\000\000\000\000\000\t\028\000\000\000\000\186:\000\000\000\000\246&\015\204\234r\n\016\014\252\014\136\194\216\n\170\000\000\000\000\186:\000\000\000\000\245\238\202\002\000\000\194\216\t\170\000\000\131\140\023\226\020\000\000\164\000\000\015d\000\246\000\000\000\000\000\000\022\236\020\000\182\026\000\000\000\000\000\000\000\000\019\000\000\000\022\236\020\000\000\000z\226\233^\135B\001\000\155\016\237\220\nJ\r\180\014\202\194\216\t\234\015*\239\198\n\142\015 \014\150\194\216\t&\000\000\000\000\186:\000\000\000\000\000\000\197<\235\000\000\000\028:\000\000\000\000\000\000\026:\240N\tF\014\140\r\220\194\216\t\228\000\000\000\000\186:\000\000\000\000\200\212\0158\240\214\011\160\0148\r\148\194\216\012&\000\000\000\000\186:\000\000\000\000\200j\186:\015Z\130\236\b\142\rp\012\234\194\216\007\234\000\000\000\000\186:\000\000\000\000\199\166\196\166\n\158\016\016\001\234\186d\tT\194\216\222\244\000\000\219H\016<\000\000\000\000\007F\016\016\t\150\000\000\022\236\020\000\185^\000\000\244\182\022\236\020\000&\128\012j\000\000&\128\020\000\171\128\135B\004^\020\022\152 \025\226\191\018\022\236\020\000}\204\022\236\020\000\019\000\019\000\000\000\000\000\000\000\000\000\004\000\026\226%\226\000\000\137\164\136\232\244\182\020\000&\128\020\000\0292\027:&\128\000\000\2100&\128\000\000\024\004\000\000\000\000\148\026~\162\000\000\000\000\000\000\000\000\2076\000\000\209,\139\n\000\000\198\000\000\000\138`\139\028\237\220\024v\194\216\205\204\000\000\019\000\192\172\019\000\002\000\005\232\133`\022\236\020\000\000\000\022\236\020\000\214\n\186:\193\252\000\000\022\236\020\000\131z\000\016\000\000\186:\201\152\186d\000\000\t\150\016\150\000\000\000\000\000\000\129\138\002\170\016\158\000\000\129h\217\216\n\216\194\216\n\234\000\000\243\254\129\138\1312\217\216\011\004\194\216\011\132\000\000\000\000\000\000\000\000\224\240\000\000\nh\227\164\213\148\016|\178\172\022\236\020\000\214\n_\226\173\252\011H\016p%\028\135\164\000\000}\128\194\216\127\172\016\204\000\000\000\000\019\000 \226\016\156\000\000\030\198\000\000\022\236\020\000\186:\198\000\000\000\022\236\020\000\019\000\027\226\000\000\000\000\000\000\000\000\161\172\022\236\020\000\214\n\000\000\000\000\019\000\012\016\016\164%\028\016\234\000\000\000\000\016\180\000\000\019\000\006\000\019\000\016\000\015\232\133`\022\236\020\000\214\n\128\204\132j\000\000N\226\150\168\012F\016\226%\028\017&\000\000\000\000\019\000\030\226\022\236\020\000\214\n^\226\186:\000\000\017\000\026\226\243@\000\000\000\000\000\000$\226\183~\022\236\020\000\214\n\\\226v\226\167\140\022\236\020\000\214\nR\226>\226\000\000\018\000\029\226\177\240\022\236\020\000\214\n\000\000\000\000\000\000\130\136\000\000\000\000\000\000\146\180\022\236\020\000\214\nh\226w\226\1760\022\236\020\000\214\nM\226'\226\159x\022\236\020\000\214\nC\226J\226\160\240\022\236\020\000\214\n3\2269\226\152\220\022\236\020\000\214\nE\226G\226\154T\022\236\020\000\214\nu\226`\226\155\204\022\236\020\000\214\nH\226Y\226\163\224\022\236\020\000\214\n?\226i\226\151d\022\236\020\000\214\nS\226c\226\1448\022\236\020\000\214\n7\226y\226\149\236\022\236\020\000\214\n6\226g\226\158\188\022\236\020\000\214\nj\226O\226\172<\022\236\020\000\214\nf\226<\226\170\196\022\236\020\000\214\nn\226:\226\179h\022\236\020\000\214\n1\226A\226\165X\022\236\020\000\214\nt\226(\226\174\184\022\236\020\000\214\na\226b\226\166\208\022\236\020\000\214\n)\226k\226\166\020\r\016\017>%\028\017\132\000\000\000\000\019\000\"\226\022\236\020\000\214\nq\226L\226\147p\022\236\020\000\214\n@\226&\226\020\000\237\220\131z\000\000\000\000\186d\002\170\000\201\194\216{\198\000\000\000\000\000\222\194\216\145\172\000\000\000\000\000\017\000\000\000\000\000\000%\028\000\000\000\174\178\172\000\000\000\000\000\000\023:\194\216\238t\000\000\000\000z\024\000\000\000\000\237\164\000\000\002J\004\164\0040\194\216\003&\000\000\000\000\186:\000\000\000\000~\162\231\188\000\000\144\128\001\160\000\000\000\000\000\000\193\\\193\\\000\000\000\000\000\000K\226\139\242\133`\000\000\002\"\000\000\007\000\148,\022\236\020\000\214\n.\226m\226\133`\003J\000\000\005\000\162h\022\236\020\000\214\nU\226V\226\133`\003\198\000\000\003\000\164\156\022\236\020\000\214\nZ\226l\226\029\226\000\000\002*\000\000\b\000\1604\022\236\020\000\214\nd\2268\226\000\000\004J\000\000\012\000\175t\022\236\020\000\214\n4\226\024\226\000\000\004\006\000\000\011\000\182\194\022\236\020\000\214\nW\2260\226\001j\001\232\133`\004x\000\000\015\000\163$\022\236\020\000\214\n5\226T\226\133`\005J\000\000\t\000\156\136\022\236\020\000\214\nx\226#\226\133`\005x\000\000\n\000\180\224\022\236\020\000\214\n-\226I\226\014\000\169\004\022\236\020\000\214\n]\226F\226\r\000\020\246\000\000\000\000\000\000\003\138\000\000\000\000\000\000\tv\000\000\005R\000\000\000\000\005\204\000\000\000\000\005\172\000\000\000\000\006\006\000\000\003\228\003\232\133`\006*\000\000\133`\006\012\000\000\133`\006\028\000\000\000\000\022\236\020\000\214\nQ\226r\226\000\000\011\130\000\000\000\000\000\000\000\000\000\000\000\000s\226\012\002\157D\022\236\020\000\214\np\226\168H\022\236\020\000\214\n+\226P\226\023\226\180$\022\236\020\000\214\n/\2262\226\006x\000\000\133`\006\166\000\000\133`\006\198\000\000\153\152\003F\011\194%\028\012\016\000\000\000\000\019\000\025\226\022\236\020\000\214\nD\226,\226\000\000\225n\000\000\000\000\000~\000\000\000\000\237\220\000\000\000\000\192\172\007\"\000\000\000\000\136,\000\000\005\198\000\000\000\000\136,\000\000\007\012\000\000\000\000\003j\004\004\000\000\000\000\025\226\192\172{\226\000\000\012\188\182\026\000\000%\028\020\022\022@&\128\000\000\001\006\000\000\000\000\196\020\027\198\190L\000\000\031\226\000\000\007v\000\000\000\000\007x\000\000\000\000\022\236\020\000\214\n\029@\195`\000\166\003j\000\000\000\000\004\166\000\000\000\000\n\160\000\000\000\000\022\236\020\000\214\n\025\012\000\000\148\026\000\000\238t\130R\000\000\020\000\148\026\242F\202\202\000\000\147^\000\000\225n\134>\000\000\195`\148\026\199\166\012\170\000\000\193\\\000\000\020\000&\128\193\\\000\000\022\144\022\236\020\000\011V\241\"\148\026\201\152\193\\\000\000\020\000\020\194\020\194\0222&\128\198\000\138N\000\000\020\000&\128\200\212\193\\\184X\020\000\020\194\0222\193\\\184X\000\000\0222\000\000\000\000\0222\193\\\000\000\130\136|\214\186:\238t\000\000\000\000\130\136|\214\022\236\020\000&\128\193\\\000\000\022\236\020\000\238\218\004H\238\218\193\\\000\000\244\208\001\160\186d\012\150\236\184\236\184\000\000\193\\\000\000\193\\\000\000\022\236\020\000\198`\000\000\186d\r<\000\000\135B\236\230\227\164\000\164\r>\012\202\186d\bD\194\216\022\152\020\000\002\252\020\000\000\000zh\r\130\000\000\000\164\000\000\000\000\r\142\227\164\215\234\000\000\213\148\022\180z\226\239P\007\254%\226\020\000\193\\\000\000\229^\b|\227\164\r\158\227\164\227\146\203h\r\174\227\164\212\216\216\166\020\000\193\\\000\000\000\000\194\216\194\216\022\144\022\236\020\000\184j\225\206\000\000\020\000\184j\225\206\000\000\026\218\022\236\020\000\011V\241\"\148\026\193\\\000\000\020\000\000(\022$\191\\\000\000\225\206\000\000\020\194\r@\148\026\193\\\214P\020\000\020\194\016\204\148\026\193\\\214P\000\000\000\000\0292}\204\000\000\193\\\000\000\148\026\225n\193\\\000\000\027:}\204\000\000\022\236\020\000\148\026\193\\\000\000\022\236\020\000\198`\218\196\244\182\022\236\020\000\003J\000\000\n\204\136\202\000\158\000\000\014\002\016\168}\000\020\000~\138\194\216\b\228\000\000\135\254\020\000\004\208\b\208\000\000\011J\000\000\014\016\r\166\194\216\193\\\000\000\020\000\002\252\000\234\000\000\bJ\000\000\014D\016H\186d\193\\\000\000\020\000}\000\014f$\226\020\000\000\000\000\151}\000\194\216\005\216\184j\000\000\194\216\127\172}\128\000\000\000\000\193\252\000\000\000\000\t:}\000\2244\193\\\000\000\020\000\194\216\203\236\194\216\144\128\193\\\000\000\t4\000\000\000\000\193\\\000\000\000\000\135\254\000\000\193\\\242\238\020\000\003J\n\204\014d\014\028}\000\193\\\242\238\000\000\000\000\020\000\003J\n\204\014\142\014\"\244(\223\178\227\164\014\178\244(\194\216}\128\014\182\244(\227\164\014\188\244(\228\228\228b\000\000\227\164\000\000\000\000\193\\\142V\020\000\003J\n\204\014\186\014H\244(\193\\\142V\000\000\000\000\000\000\194\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\193\\\000\000\243N\020\000\136\202\014\204\229N\000\000\225\206\243N\000\000\000\000\141X\020\000\136\202\014\208\014l\242X\190\150\000\164\015 \000\000\0154\000\000\000\000\198`\218\196\020\000\000\000\212b\198`\000\000\000\000\225\206\141X\000\000\000\000\000\000\202\002\198`\139\160\000\164\015H\000\000\000\000\000\000\218\196\020\000\000\000\000\164\015r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\202\244\182\020\000\003J\n\204\015H\226\156\129\138\182\026\020\000\128\226\131\140\024\226\020\000%\130\000\000\015J\236\028\217\216\002\170\014\240\194\216\204\140\000\000\000\000\015\n\000\000\000\000\000\000\193\\\000\000\000\208\007\160\000\000\tJ\000\000\015j\014\246\186d\000\000\015\140\232\194\191\\\002\170\015>\194\216\205,\000\000\000\000\015:\000\000\000\000\000\000\020\000\000\000\193\\\000\000\139\242\020\000\182\026\182\026\143~\130\136\020\000\185^\237\220\193\\\000\000#\226\020\000\000\000\007\216\182\026\194\216\tt\182\026\000\000\020\000\226\156\226\156\182\026\b\204\182\026\000\000{\226~\184\000\000\204\140\000\000\000\000\203\236\000\000\000\000\205,\000\000\b:\182\026\205\204\185^\237\220\193\\\000\000\000\"\000\000\000\000\244(\007\244\000\000\000\000\242F\015F\000\000\193\\\000\000\182\026\242F\193\\\000\000\020\000\194\216\193\\\000\000\n\004\000\000\000\000\193\\\000\000\000\000\131\140\000\000\199\166\244(\015J\182\026\200j\226\156\000\000\193\\\200\016\020\000\003J\n\204\015\160\226\156\193\\\200\016\000\000\000\000\000\000\185^\022\236\020\000\185^\237\220\193\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\243@\193\\\000\000\243N\000\000\000\000\000\000\000\000\193\\\185^\000\000\000\000\000\000\243@\014\240\000\000\014\218\000\000\0144\000\000\000\000\000\000\014\158\000\000\000\000\000\000\022\236\020\000\214\nB\226X\226\000\000\b\198\000\000\000\000\000\000\244\182\020\000&\128\200\212\000\000\137\146\000\000\197<\000\000\020\224\000\000\000\000\014\136\000\000\014\016\214\n;\226\016\192\000\000\000\000\000\000\r\234\000\000\000\000\193\\\000\000\003\208\007\226\000\000\005\170\000\000\017\002\015H\194\216\238t\r\208\020\224\000\000\000\000\rx\000\000\000\000\rJ\000\000\000\000\193\\\185^\000\000\000\000\r\220\000\000\024\174\000\000\000\000\200j\000\000\027\172\186d\020\000\004\246\020\000\181B\000\000\000\000\203h\208^\000\000\000\000\r(\000\000'\200\016\016\012\228\158\000\007\158\015\226%\028\rx\000\000\000\000\019\000!\226\022\236\020\000\214\ne\226=\226\012\026\145\248\t\016\012\204%\028\r\002\000\000\000\000\019\000\028\226\022\236\020\000\214\n*\226o\226\r \218x\000\000[\226\016&\000\000\000\000\012\156%\130\029\166\198`\218\196\022\180\020\000\000\000\193\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\b\022\180\020\000\000\000\006V\229N\000\000\225\206\000\000\016:%\130\029\166\193\\\000\000\007\198\000\000\000\000\209,\193\\\0162\194\216\000\000\007T\194\216\006\234\016J\194\216\000\000\012\\\194\216\000\000\212\216\143\182\188\182\194\216\000\000\nT\194\216\006\132\012v\194\216\000\000\000\164\012r\000\000\000\000\197<\000\000\000\000\242X\000\000\225\206\000\000\012\022%\130\212b\225\206\000\000\000\000\000\000\000\000\005V\241\194\242X\000\000\225\206\000\000\n\156%\130\212b\225\206\000\000\001\198\000\000\000\000\144\128\016V\194\216\000\000\193\\\000\000\011\246\000\000\000\000\015\218\000\000\006\b\000\000\000\000\011\012\000\000\000\000\194\216\n\224\000\000\000\000\023\218\206x\016\136\000\000\000\000\000\000\005\004\002\160\211\"\n\224\000\000\000\000\000\000\000\000\000\000\000\000\t\230\000\000\022\180\000\000\007\254\000\000\194\216\000\000\195`\000\000\000\000\tx\000\000\000\000\184j\000\000\000\254\000\000\000\000\000\000\000\151\000\000&\128\000\000\202\202\000\000\148\026\000\000\139\242\000\000\148\026\000\000\006\224\000\000\186:\238t\000\000\000\000\238\218\006\142\000\000\000\000\127\172\011V\238\218\000\000\000\000\000\000\000\000\000\000\244\208\000\000\000\000\006\248\000\000\169\190\000\000\193\\\006R\000\000\005\138\000\000}\204}\204\149\006\149\006\000\000\000\000\193\\\149\006\000\000\000\000\000\000\193\\\149\006\000\230\000\000\000\003\000\000" + "|\214\022\236\130\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\246\130\136\000\000\000\000\020\000\130\136|\214\022\236\020\000\238\174\208\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\228\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\232\020l\016~\000\000\017B\002\136\000\000\020l\017t\004\136\000\000\020l\017\130\006\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r*\000\000\000\000\000\000\017\018\186b\000\000\000\000\000\000\rV\000\000\000\000\144n\000>\000\166\000\000\000\000\186b\022\236\020\000\145J\024\198\147\154\199\186\005\028\000\000\020\000\196\170\022\236\020\000\135\030\000\000\000:\000\000\136\202\001\232\000\000\136\202\000\000\002l\000\000\000\000\007\030\000\000\rV\000\000\000\000\000\000\000\158\000\000\136\202\000\000\007\230\241p\242\006\217\242\000\000\rV\000\000\185\134\186b\000\000\141\142\139\134\1894\022\236\020\000\136\214\028\198\147\154\014\144\014f\020\000\216j\000\000\000\000\020\000|\214\000\000\022\236\020\000\136\202\136\202\bV\229\232\000\000\225\232\130\136|\214\022\236\020\000\000\000\011F\015\156%\028\133\194\000\000\192\222\188n\022\236\020\000\147\154}\142\000\000\199\186\000\000\130\136|\214\000\000|\214\000\000\019\000\022\236\020\000\128\226\187,\000\000\n\016\016>\015\204\196\170\143\182\000\000\196\170\143\182\000\000\196\170\196\170\182\224\000\000\006\210\244j\000\000\225\232\000\000\029\202\000\000\000\000\029\202\000\000\000\000\000\000\196\170\rV\000\000\000\000\191b\196\170\023V\187V\001*}\000\182\224\000\000\000\000\000\000\196\170\000\000\t\228\029\202\188n\000\000\000\000\000\000\000\000\000\000\021\244\000\000\000\000\145`\2036\140\144\229\248\182\224\182\224\000\000\000\000\189\190\227\020\142\140\229\248\153\188\181\226\175\186\192&\017r\rV\000\000\000\000\019F\012T\rV\000\000\196\170\012\136\017\\\196\170\000\000\021\244\196\170&X\017|\196\170\000\000\000\000\000\000\000\000\012\154\000\000\196\170\000\000\020\000\231\014\000\000\196\170\020\000\196\170&\b\000\000\020\000\000\000&n\000\000\242\182\r\b\000\000\016\234\196\170\r\154\000\000\r\216\000\000\002J\000\000\000\000%\226\000\000\000\000\000\000\012\234\017\028\235\222\rJ\017\156\017$\196\170\140B\000\000\000\000\028F\000\000\000\000\030F\000\000\000\000\129\138\028F\228\144\020\000\020\194\000\000\000&\000\000\147\154\020\000\0292\020\194\001\220\147\154\0222\147\154\000\000\221J\006Z\136\202\216j\000\000\003\228\028\226\000\000\000\000\000\000\000\000\002\244\132\204\000\000\196\170\216(\196\170\211\000\216\236\196\170\242\182\196\170\203\212\000\000%\226\147\154\004L\147\154\223r\147\154\221\204\000\000\004f\002\160\207\154\000\000\000\000\000\000\000\000\000\000\147\154\219\196\193\198\182\224\211\196\027\198\182\224\209P\000\000\220F\006Z\000\000\000\000\153\024\000\000\0292\147\154\220\200z\024\000\000\000\000\030F\208\176\219$\000\000\216j\006\244\000\000\000\000\031\028\196\170&X \026\187,\022\236\020\000\187,\000\000\182\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\165\206{\226\000\000\000\000\000\000\134V\028\226\208\176\000\000\000\000\187,\n\242\232\228\b\016\011p\011:\196\170\011&\000\000\000\000\187,\000\000\000\000\000\000\000\000\022\236\020\000\187,\187,\000\000\011\242\187,\000\000\187,\000\000\000\000\000\000\000\000\000\000\244\238\231\200\b\158\r\140\r:\196\170\007\170\000\000\000\000\187,\000\000\000\000\210\240\230\172\000\000\2450\1868\128\150\002\170\002\170\000\000\014\016\187,\000\000\014*\000\000{\204\000\000\000\000\228d\000\000\tJ\014>\r\202\196\170\t\170\000\000\000\000\187,\000\000\000\000\143~\188n\000\000\005\136\000\000\000\000\234\194\000\000\194\240\238\174\000\000\000\000\000\000\000\000\000\000\245\204\014\250\000\000\021D\000\000\000\000\208\176\000\000\b\160\000\000\000\000\154D\213\238\000\000\000\000\140B\023\134\144D\023\146\000\000\000\000\000\000\000\000\n\028\000\000\000\000\187,\000\000\000\000\246\022\016.\233r\n\142\015V\014\228\196\170\011\170\000\000\000\000\187,\000\000\000\000\245\148\202\152\000\000\196\170\n\234\000\000\131\140\023\226\020\000\001\252\000\000\015\186\020\224\000\000\000\000\000\000\022\236\020\000\216j\000\000\000\000\000\000\000\000\019\000\000\000\022\236\020\000\000\000%\226\227\212\135B\002\000\180:\237|\011\142\015\142\015\018\196\170\n\170\015x\239\252\011\016\015F\015\240\196\170\n\136\000\000\000\000\187,\000\000\000\000\000\000\201\000\235P\000\000\026:\000\000\000\000\000\000\028:\239@\nF\014\194\0140\196\170\011\136\000\000\000\000\187,\000\000\000\000\198\150\015\198\240\132\rF\014F\r\150\196\170\t\134\000\000\000\000\187,\000\000\000\000\200<\187,\015\214\130\236\t\016\012\180\012\240\196\170\007\234\000\000\000\000\187,\000\000\000\000\197\210\197<\011\158\016\140\001\234\186b\011T\196\170\224v\000\000\222N\016\164\000\000\000\000\r\016\016\140\tx\000\000\022\236\020\000\185\\\000\000\228\144\022\236\020\000\216j\n\166\000\000\216j\020\000\157\128\135B\006^\020\022\146\240\025\226\188\234\022\236\020\000}\204\022\236\020\000\019\000\019\000\000\000\000\000\000\000\000\000\t\000\026\226z\226\000\000\136\232\139\028\228\144\020\000\216j\020\000\0292\027:\216j\000\000\209\210\216j\000\000\024\174\000\000\000\000\147\154~\162\000\000\000\000\000\000\000\000\207\024\000\000\203\212\139\n\000\000\198\150\000\000\138`\137\164\237|\024v\196\170\206T\000\000\019\000\193\022\019\000\003\000\004\232\133`\022\236\020\000\000\000\022\236\020\000\213\238\187,\1958\000\000\022\236\020\000\131z\000\016\000\000\187,\202.\186b\000\000\tx\017&\000\000\000\000\000\000\129\138\002\170\017<\000\000\129h\1894\012\004\196\170\012&\000\000\244\n\129\138\1312\1894\0126\196\170\012\134\000\000\000\000\000\000\000\000\225\n\000\000\nh\229\248\213x\017\024\177J\022\236\020\000\213\238;\226\176\142\012\016\017\014%\028\135\164\000\000}\128\196\170\127\172\017P\000\000\000\000\019\000\030\226\017 \000\000\030\198\000\000\022\236\020\000\187,\201j\000\000\022\236\020\000\019\000\029\226\000\000\000\000\000\000\000\000\178\006\022\236\020\000\213\238\000\000\000\000\018\000\004\016\000\000\017D%\028\017\134\000\000\000\000\b\160\000\000\000\000\019\000\001\000\019\000\005\000\015\232\133`\022\236\020\000\213\238\128\204\133`\000\000]\226\147\172\012\142\017V%\028\017\158\000\000\000\000\019\000\026\226\022\236\020\000\213\2386\226\187,\000\000\019\000 \226\219j\000\000\000\000\000\000$\226\156\196\022\236\020\000\213\238C\226?\226\169\170\022\236\020\000\213\238`\226l\226\000\000\017\000\028\226\178\194\022\236\020\000\213\238\000\000\000\000\000\000\130\136\000\000\000\000\000\000\164\216\022\236\020\000\213\238L\226t\226\164\028\022\236\020\000\213\238V\226R\226\161\232\022\236\020\000\213\238o\226&\226\1464\022\236\020\000\213\238D\226U\226\180\246\022\236\020\000\213\238:\226g\226\1682\022\236\020\000\213\238>\226\024\226\152\020\022\236\020\000\213\238w\226m\226\183\180\022\236\020\000\213\238B\226T\226\150\156\022\236\020\000\213\2383\2269\226\184p\022\236\020\000\213\2382\226s\226\167v\022\236\020\000\213\238H\226#\226\174\018\022\236\020\000\213\238P\226b\226\168\238\022\236\020\000\213\238y\226[\226\152\208\022\236\020\000\213\238a\226q\226\166\186\022\236\020\000\213\238-\226p\226\171\"\022\236\020\000\213\238E\226O\226\179~\022\236\020\000\213\238n\226'\226\154\144\022\236\020\000\213\238N\2261\226\156\b\r\160\017\160%\028\017\234\000\000\000\000\019\000\"\226\022\236\020\000\213\238=\226G\226\159\180\022\236\020\000\213\238.\2264\226\020\000\237|\131z\000\000\000\000\186b\002\170\000\201\196\170{\204\000\000\000\000\000\222\196\170\154D\000\000\000\000\000\002\000\000\000\000\000\000%\028\000\000\001x\177J\000\000\000\000\000\000\023:\196\170\238H\000\000\000\000z\024\000\000\000\000\237\180\000\000\001J\002\204\002\208\196\170\003\134\000\000\000\000\187,\000\000\000\000~\162\231:\000\000\153\024\001\160\000\000\000\000\000\000\193\198\193\198\000\000\000\000\000\000I\226\139\242\132j\000\000\002\"\000\000\006\000\151X\022\236\020\000\213\238J\226f\226\133`\001J\000\000\b\000\158\248\022\236\020\000\213\238F\226^\226\133`\001\006\000\000\015\000\172\154\022\236\020\000\213\238M\226X\226\029\226\000\000\003\"\000\000\011\000\148h\022\236\020\000\213\238(\226\023\226\000\000\001\166\000\000\012\000\158<\022\236\020\000\213\238x\226+\226\000\000\003\198\000\000\r\000\149\224\022\236\020\000\213\238Z\226K\226\003\128\000\232\133`\004*\000\000\014\000\170f\022\236\020\000\213\238v\226<\226\133`\003\160\000\000\007\000\160p\022\236\020\000\213\238S\226A\226\133`\004\198\000\000\n\000\174\206\022\236\020\000\213\238)\2265\226\004\000\162\164\022\236\020\000\213\238_\226d\226\016\000\020\246\000\000\000\000\000\000\002T\000\000\000\000\000\000\005\234\000\000\000\246\000\000\000\000\005x\000\000\000\000\005\166\000\000\000\000\005\198\000\000\003\228\002\232\133`\006\"\000\000\133`\005\172\000\000\133`\006\006\000\000\000\000\022\236\020\000\213\238u\2267\226\000\000\b\198\000\000\000\000\000\000\000\000\000\000\000\000Q\226\t8\163`\022\236\020\000\213\238r\226\149$\022\236\020\000\213\238e\226j\226*\226\173V\022\236\020\000\213\238i\226,\226\006*\000\000\133`\006\160\000\000\133`\006x\000\000\155L\004\158\t>%\028\t\150\000\000\000\000\019\000!\226\022\236\020\000\213\2388\2260\226\000\000\225\136\000\000\000\000\004\198\000\000\000\000\237|\000\000\000\000\193\022\006N\000\000\000\000\136,\000\000\006d\000\000\000\000\136,\000\000\006\172\000\000\000\000\004j\007\b\000\000\000\000\025\226\193\022{\226\000\000\n\202\216j\000\000%\028\020\022\022@\216j\000\000\007\028\000\000\000\000\196\028\027\198\188$\000\000\027\226\000\000\0074\000\000\000\000\007x\000\000\000\000\022\236\020\000\213\238\029@\194z\003\004\004j\000\000\000\000\b\006\000\000\000\000\b\b\000\000\000\000\022\236\020\000\213\238\027\012\000\000\146\222\000\000\238H\130R\000\000\020\000\147\154\242\182\214n\000\000\138N\000\000\225\136\137\146\000\000\194z\147\154\200<\011\158\000\000\193\198\000\000\020\000\216j\193\198\000\000\022\144\022\236\020\000\rV\240\208\147\154\202.\193\198\000\000\020\000\020\194\020\194\0222\216j\198\150\134>\000\000\020\000\216j\201j\193\198\181\208\020\000\020\194\0222\193\198\181\208\000\000\0222\000\000\000\000\0222\193\198\000\000\130\136|\214\187,\238H\000\000\000\000\130\136|\214\022\236\020\000\216j\193\198\000\000\022\236\020\000\238\174\006\204\238\174\193\198\000\000\145*\001\160\186b\012|\236\144\236\144\000\000\193\198\000\000\193\198\000\000\022\236\020\000\198\246\000\000\186b\r\"\000\000\135B\236\190\229\248\001\252\r>\012\234\186b\bT\196\170zh\020\000\b$\020\000\000\000\022\152\r\170\000\000\001\252\000\000\000\000\r\242\229\248\215\200\000\000\213x\022\180%\226\239\134\b\196z\226\020\000\193\198\000\000\246\176\b\222\229\248\r\204\229\248\227R\215\012\r\212\229\248\212\188\203t\020\000\193\198\000\000\000\000\196\170\196\170\022\144\022\236\020\000\182\224\225\232\000\000\020\000\182\224\225\232\000\000\026\218\022\236\020\000\rV\240\208\147\154\193\198\000\000\020\000\000(\022$\187V\000\000\225\232\000\000\020\194\rl\147\154\193\198\244\184\020\000\020\194\r\130\147\154\193\198\244\184\000\000\000\000\0292}\204\000\000\193\198\000\000\147\154\225\136\193\198\000\000\027:}\204\000\000\022\236\020\000\147\154\193\198\000\000\022\236\020\000\198\246\218R\228\144\022\236\020\000\001\208\000\000\007J\136\202\000\158\000\000\014J\014\002}\000\020\000~\138\196\170\t\234\000\000\135\254\020\000\000\208\t\208\000\000\n\208\000\000\014p\016\234\196\170\193\198\000\000\020\000\003\252\011\252\000\000\b\208\000\000\014\156\014$\186b\193\198\000\000\020\000}\000\014\192#\226\020\000\000\000\000\151}\000\196\170\005\216\182\224\000\000\196\170\127\172}\128\000\000\000\000\1958\000\000\000\000\n\150}\000\222\238\193\198\000\000\020\000\196\170\204t\196\170\153\024\193\198\000\000\t\198\000\000\000\000\193\198\000\000\000\000\135\254\000\000\193\198\243>\020\000\001\208\007J\014\208\014\142}\000\193\198\243>\000\000\000\000\020\000\001\208\007J\014\230\014p\244j\223\244\229\248\015\014\244j\196\170}\128\015\020\244j\229\248\015 \244j\228\252\229~\000\000\242\128\000\000\000\000\193\198\142V\020\000\001\208\007J\015\016\014\166\244j\193\198\142V\000\000\000\000\000\000\196\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\193\198\000\000\243l\020\000\136\202\0158\229\232\000\000\225\232\243l\000\000\000\000\141X\020\000\136\202\015>\014\206\242\006\188n\001\252\015\130\000\000\015\148\000\000\000\000\198\246\218R\020\000\000\000\212F\198\246\000\000\000\000\225\232\141X\000\000\000\000\000\000\202\152\198\246\139\160\001\252\015\158\000\000\000\000\000\000\218R\020\000\000\000\001\252\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\194z\228\144\020\000\001\208\007J\015\158\226\182\129\138\144D\020\000\128\226\131\140\024\226\020\000%\130\000\000\015\160\232V\1894\002\170\015D\196\170\205\020\000\000\000\000\015`\000\000\000\000\000\000\193\198\000\000\003\208\003>\000\000\t\252\000\000\015\194\015R\186b\000\000\015\208\234\000\187V\002\170\015\150\196\170\205\180\000\000\000\000\015\142\000\000\000\000\000\000\020\000\000\000\193\198\000\000\139\242\020\000\144D\144D\143~\130\136\020\000\185\\\237|\193\198\000\000$\226\020\000\000\000\t:\144D\196\170\n\216\216j\000\000\020\000\226\182\226\182\144D\004\180\144D\000\000{\226~\184\000\000\205\020\000\000\000\000\204t\000\000\000\000\206T\000\000\n\132\144D\205\180\185\\\237|\193\198\000\000\000\"\000\000\000\000\244j\t\204\000\000\000\000\242\182\015j\000\000\193\198\000\000\144D\242\182\193\198\000\000\020\000\196\170\193\198\000\000\b\198\000\000\000\000\193\198\000\000\000\000\131\140\000\000\201\000\244j\015\186\144D\200<\226\182\000\000\193\198\200\166\020\000\001\208\007J\016\016\226\182\193\198\200\166\000\000\000\000\000\000\185\\\022\236\020\000\185\\\237|\193\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\219j\193\198\000\000\243l\000\000\000\000\000\000\000\000\193\198\185\\\000\000\000\000\000\000\219j\017&\000\000\015\b\000\000\015\234\000\000\000\000\000\000\014\244\000\000\000\000\000\000\022\236\020\000\213\238/\226h\226\000\000\td\000\000\000\000\000\000\228\144\020\000\216j\201j\000\000\147\154\000\000\197\210\000\000\020\224\000\000\000\000\014\206\000\000\014\242\213\238\\\226\014p\000\000\000\000\000\000\014\016\000\000\000\000\193\198\000\000\004\208\b\226\000\000\012J\000\000\014\014\015\202\196\170\238H\014\002\000\017\000\000\000\000\r\142\000\000\000\000\007\004\000\000\000\000\193\198\185\\\000\000\000\000\014\b\000\000\026\214\000\000\000\000\201\000\000\000\027\172\186b\020\000\007\252\020\000\165:\000\000\000\000\203t\184\210\000\000\000\000\012\246\000\000'\200\016\138\012t\161,\b\142\016V%\028\012\176\000\000\000\000\019\000\031\226\022\236\020\000\213\238Y\226k\226\011\228\171\222\bJ\0128%\028\012\"\000\000\000\000\019\000\025\226\022\236\020\000\213\238c\226W\226\011\188\219$\000\000@\226\016\154\000\000\000\000\011d%\130\024\030\198\246\234L\022\180\020\000\000\000\193\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\218R\022\180\020\000\000\000\007V\229\232\000\000\225\232\000\000\016\156%\130\024\030\193\198\000\000\007v\000\000\000\000\217p\193\198\016\174\196\170\000\000\003\222\196\170\006\234\016\176\196\170\000\000\n\198\196\170\000\000\212\188\2036\190\158\196\170\000\000\011\222\196\170\007\132\016\188\196\170\000\000\001\252\n\152\000\000\000\000\197\210\000\000\000\000\242\006\000\000\225\232\000\000\nd%\130\212F\225\232\000\000\000\000\000\000\000\000\003V\229\232\242\006\000\000\225\232\000\000\n\022%\130\212F\225\232\000\000\005v\000\000\000\000\154D\016\198\196\170\000\000\193\198\000\000\016\246\000\000\000\000\016V\000\000\003R\000\000\000\000\007\\\000\000\000\000\196\170\007\024\000\000\000\000\023\218\208\n\017\012\000\000\000\000\000\000\004\228\002\160\210B\006\170\000\000\000\000\000\000\000\000\000\000\000\000\005\\\000\000\022\180\000\000\005R\000\000\196\170\000\000\214n\000\000\000\000\005\012\000\000\000\000\182\224\000\000\000\254\000\000\000\000\000\000\000\151\000\000\216j\000\000\194z\000\000\147\154\000\000\139\242\000\000\147\154\000\000\003\254\000\000\187,\238H\000\000\000\000\238\174\003\230\000\000\000\000}\204\rV\238\174\000\000\000\000\000\000\000\000\000\000\145*\000\000\000\000\003d\000\000\190\140\000\000\193\198\004|\000\000\002\142\000\000\127\172\127\172\175\168\175\168\000\000\000\000\193\198\175\168\000\000\000\000\000\000\193\198\175\168\000\\\000\000\016x\000\000" let[@inline] action_displacement = fun i -> MenhirLib.PackedIntArray.get16 action_displacement i let action_data = - "\003\217\003\217\000\006\017\030\026\022\003\217\002\234\002\222\003\217\003\022\002\150\003\217\003\"\003\217\012\170\003b\003\217\030\n\003\217\003\217\003\217#\147\003\217\003\217\003\217\001\214\003N\024\190\006\166\003n\003\217\t\174\t\178\014\238\003\217\015q\003\217\030\014\003r\001\238\t\182\024\210\003\217\003\217\t\202\t\206\003\217\t\210\t\214\003\217\t\218\t\230\t\242\t\250\011F\015q\003\217\003\217\003Z\012\174\012\202\t\238\003\217\003\217\003\217\011z\011~\011\138\011\158\012^\007&\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\012v\000\242\003\217\011\189\003\217\003\217\017F\012\130\012\154\r\154\0072\0076\003\217\003\217\003\217$w\003\217\003\217\003\217\002z\003\217\025z\021\230\020>\003\217\004u\003\217\003\217\028\238\003\217\003\217\003\217\003\217\003\217\003\217\007:\011\146\003\217\003\217\003\217\011\170\003\238\r\174\t\158\003\217\003\217\003\217\003\217\015\173\015\173\030\018\021\150\028\246\015\173\007\177\015\173\015\173\004\174\015\173\015\173\015\173\015\173\021\006\015\173\015\173\025\218\015\173\015\173\015\173\002:\015\173\015\173\015\173\015\173\021\154\015\173\n\r\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\005\202\015\173\011\189\015\173\n\029\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\003\190\015\173\015\173\017^\015\173\t\246\015\173\015\173\015\173\021\014\002~\015\173\015\173\015\173\015\173\015\173\015\173\015\173\bA\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\017\210\015\173\015\173$o\015\173\015\173\0172\006\014\bA\t\170\015\173\015\173\015\173\015\173\015\173#\131\015\173\015\173\015\173\"\162\015\173\015\173\003\206\015\173\015\173\003.\015\173\015\173\rb\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015\173\015u\001z\015\173\015\173\015\173\015\173\r%\r%\005\206\001\006\001\194\r%\011\149\r%\r%\004}\r%\r%\r%\r%\015u\r%\r%\018\006\r%\r%\r%\018\130\r%\r%\r%\r%\018\246\r%\006\n\r%\r%\r%\r%\r%\r%\r%\r%\018\n\r%\018\250\r%\018\134\r%\r%\r%\r%\r%\r%\r%\r%\000\242\r%\r%\019\"\r%\019J\r%\r%\r%\005V\015y\r%\r%\r%\r%\r%\r%\r%\"\166\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\015y\r%\r%\004}\r%\r%\002V\006r\017\154\017\174\r%\r%\r%\r%\r%\011\149\r%\r%\r%\002Z\r%\012n\011\018\r\146\r%\007\209\r%\r%\002F\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\r%\005Z\r%\r%\r%\r%\r%\012\141\012\141\025\214#\030\001\226\012\141\004\014\012\141\012\141\b:\012\141\012\141\012\141\012\141\001\242\012\141\012\141\023\214\012\141\012\141\012\141\004i\012\141\012\141\012\141\012\141\025\222\012\141\004\246\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\018.\012\141\017\170\012\141\025j\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\n\021\012\141\012\141\011\193\012\141\018^\012\141\012\141\012\141\0182\007\209\012\141\012\141\012\141\012\141\012\141\012\141\012\141\bI\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\019\166\012\141\012\141\000\242\012\141\012\141\020\194\020\210\bI\015\209\012\141\012\141\012\141\012\141\012\141\004\"\012\141\012\141\012\141\018V\012\141\012\141\015\209\012\141\012\141\011\130\012\141\012\141\031\246\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\018Z\001\138\012\141\012\141\012\141\012\141\001\153\001\153\021Z\018\210\006\"\001\153\004N\001\153\001\153\011\193\001\153\001\153\001\153\001\153\005\226\001\153\001\153\031\254\001\153\001\153\001\153\006*\001\153\001\153\001\153\001\153\018\214\001\153\007\177\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\018\170\001\153\019\238\001\153\019\170\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\000\242\001\153\001\153\019\250\001\153\020\006\001\153\001\153\001\153\018\174\019\002\001\153\001\153\001\153\001\153\001\153\001\153\001\153\b\162\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\019\006\001\153\001\153\021\246\001\153\001\153\021^\019\234\b\166\006\n\001\153\001\153\001\153\001\153\001\153\004\206\001\153\001\153\001\153\011\130\001\153\001\153\003\190\011\194\001\153\006^\001\153\001\153\025\170\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\006\138\001\153\001\153\001\153\001\153\001\153\012\149\012\149\023R\021\238\000\242\012\149\017\158\012\149\012\149\017\162\012\149\012\149\012\149\012\149 z\012\149\012\149\025\178\012\149\012\149\012\149\023f\012\149\012\149\012\149\012\149\006n\012\149\007\185\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\019*\012\149\021\250\012\149\019\190\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\001\210\012\149\012\149\003\190\012\149\0186\012\149\012\149\012\149\019.\019R\012\149\012\149\012\149\012\149\012\149\012\149\012\149\bQ\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\006\157\012\149\012\149\019V\012\149\012\149\018\170$3\bQ \002\012\149\012\149\012\149\012\149\012\149\"v\012\149\012\149\012\149\0216\012\149\012\149\018\130\012\149\012\149#\026\012\149\012\149\019\214\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\019\202\001\154\012\149\012\149\012\149\012\149\004\157\004\157\026\"\018\210\"\218\004\157\019*\004\157\004\157\007\181\004\157\004\157\004\157\004\157\019R\004\157\004\157\019\194\004\157\004\157\004\157\019\002\004\157\004\157\004\157\004\157\019\226\004\157\020\002\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\020\014\004\157\012r\004\157\019\246\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\001\210\004\157\004\157\020\162\004\157\020\174\004\157\004\157\004\157$+\018\006\004\157\004\157\004\157\004\157\004\157\004\157\004\157\005\250\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\020\158\012f\r\138\018.\004\157\004\157\"\026\001\210\021:\026*\004\157\004\157\004\157\004\157\004\157!\146\004\157\004\157\004\157\018V\004\157\012n\006R\r\146\004\157\020\170\004\157\004\157\"\222\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\004\157\020\182\004\157\004\157\004\157\004\157\004\157\012\133\012\133\000\242\006\254\002\138\012\133\021J\012\133\012\133!\226\012\133\012\133\012\133\012\133$\023\012\133\012\133\021\"\012\133\012\133\012\133\002b\012\133\012\133\012\133\012\133\007\002\012\133\021N\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\021&\012\133#\223\012\133\002f\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\003\190\012\133\012\133\000\242\012\133\018\014\012\133\012\133\012\133\021\186\021\198\012\133\012\133\012\133\012\133\012\133\012\133\012\133\004\174\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133#\195\012\133\012\133\021\202\012\133\012\133\011:\031Z\007\138\007\158\012\133\012\133\012\133\012\133\012\133\002\026\012\133\012\133\012\133!\186\012\133\012\133\003\218\012\133\012\133\b\n\012\133\012\133\028\242\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\030\026\007\154\012\133\012\133\012\133\012\133\012y\012y \182 \198\015\229\012y\006\014\012y\012y\n\234\012y\012y\012y\012y\030\030\012y\012y!\218\012y\012y\012y\000\242\012y\012y\012y\012y\031\250\012y\021\190\012y\012y\012y\012y\012y\012y\012y\012y\015\217\012y\000\242\012y\025\226\012y\012y\012y\012y\012y\012y\012y\012y\024\026\012y\012y\000\242\012y\018\138\012y\012y\012y\029\142\004\174\012y\012y\012y\012y\012y\012y\012y!\190\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\b\242\012y\012y\006\166\012y\012y\007\250\b\014\004\174\n\025\012y\012y\012y\012y\012y#S\012y\012y\012y\031~\012y\012y\b\246\012y\012y\b~\012y\012y\029\238\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\012y\n\218\n\238\012y\012y\012y\012y\012\153\012\153\bn\b\130\006\166\012\153\025\154\012\153\012\153\023\198\012\153\012\153\012\153\012\153\t.\012\153\012\153\025\174\012\153\012\153\012\153\000\242\012\153\012\153\012\153\012\153\026~\012\153\007\193\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\0242\012\153\n.\012\153\028\250\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\000\242\012\153\012\153\029\182\012\153\0192\012\153\012\153\012\153 \242!\002\012\153\012\153\012\153\012\153\012\153\012\153\012\153\004\174\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\029\154\012\153\012\153\000\242\012\153\012\153\nn\n\130\031\130\n\017\012\153\012\153\012\153\012\153\012\153\b\253\012\153\012\153\012\153\016\254\012\153\012\153\003\190\012\153\012\153\t\138\012\153\012\153\026N\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\001\186\026\130\012\153\012\153\012\153\012\153\012\145\012\145\030Z\t2\006\166\012\145\n~\012\145\012\145\n\018\012\145\012\145\012\145\012\145\001\190\012\145\012\145\011\026\012\145\012\145\012\145\000\242\012\145\012\145\012\145\012\145\004.\012\145#o\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\019\182\012\145\026*\012\145\011B\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\000\242\012\145\012\145\000\242\012\145\019Z\012\145\012\145\012\145\tR\tf\012\145\012\145\012\145\012\145\012\145\012\145\012\145\004\174\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\022\002\012\145\012\145#C\012\145\012\145\003& \230\n\002\n\150\012\145\012\145\012\145\012\145\012\145\b\209\012\145\012\145\012\145\030^\012\145\012\145\022\006\012\145\012\145\tb\012\145\012\145\"\142\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\n\030\n2\012\145\012\145\012\145\012\145\012}\012}\011\n\0112#&\012}\004\174\012}\012}\012\246\012}\012}\012}\012}\001\210\012}\012}\"\018\012}\012}\012}\000\242\012}\012}\012}\012}\002A\012}\004\174\012}\012}\012}\012}\012}\012}\012}\012}\r2\012}\025r\012}\025\182\012}\012}\012}\012}\012}\012}\012}\012}\001\222\012}\012}\000\242\012}\018\218\012}\012}\012}\003\002\004\174\012}\012}\012}\012}\012}\012}\012}\004\242\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\"\247\012}\012}\012\238\012}\012}\r\022\rZ\r~\007\189\012}\012}\012}\012}\012}\001\226\012}\012}\012}\0056\012}\012}\"\231\012}\012}\r\014\012}\012}\0202\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\012}\003\138\tF\012}\012}\012}\012}\012\129\012\129\000\242\n\162\n\182\012\129\004\190\012\129\012\129\004\182\012\129\012\129\012\129\012\129\020R\012\129\012\129\"\198\012\129\012\129\012\129\020\198\012\129\012\129\012\129\012\129\005F\012\129\020\206\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\004\246\012\129\n\178\012\129\"V\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\000\242\012\129\012\129\011j\012\129\018\178\012\129\012\129\012\129\r\238\r\254\012\129\012\129\012\129\012\129\012\129\012\129\012\129\011\157\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\".\012\129\012\129\000\242\012\129\012\129\014F\014V\005r!\242\012\129\012\129\012\129\012\129\012\129\021v\012\129\012\129\012\129\005N\012\129\012\129\"\030\012\129\012\129\022j\012\129\012\129!B\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129 \234\004\246\012\129\012\129\012\129\012\129\004\137\004\137\005~\005\146\000\242\004\137\007\130\004\137\004\137\007\142\004\137\004\137\004\137\004\137\007\146\004\137\004\137!&\004\137\004\137\004\137 \254\004\137\004\137\004\137\004\137 \246\004\137\007\206\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137 6\004\137\001f\004\137\023n\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\023\162\004\137\004\137\001~\004\137\001\142\004\137\004\137\004\137\016\182\016\198\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\246\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137 \194\012f\r\138\023\186\004\137\004\137\023\190\023\250\023\230\007\254\004\137\004\137\004\137\004\137\004\137 \174\004\137\004\137\004\137\b\002\004\137\012n\n\226\r\146\004\137 \158\004\137\004\137\n\222\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\024:\004\137\004\137\004\137\004\137\004\137\r\017\r\017\024J\bF R\r\017 :\r\017\r\017\031\198\r\017\r\017\r\017\r\017\n\006\r\017\r\017\024\218\r\017\r\017\r\017\bR\r\017\r\017\r\017\r\017 *\r\017 \026\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\002\210\r\017\br\r\017\bv\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\002\214\r\017\r\017\025\130\r\017\019v\r\017\r\017\r\017\n\170\025\190\r\017\r\017\r\017\r\017\r\017\r\017\r\017\025\194\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\n\166\r\017\r\017\031\226\r\017\r\017\025\234\026\006\031\190\b\214\r\017\r\017\r\017\r\017\r\017\nv\r\017\r\017\r\017\031V\r\017\r\017\026\178\r\017\r\017\031F\r\017\r\017\026\182\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\r\017\nr\026\218\r\017\r\017\r\017\r\017\012\137\012\137\026\222\031>\026\238\012\137\026\254\012\137\012\137\027\n\012\137\012\137\012\137\012\137\0316\012\137\012\137\027>\012\137\012\137\012\137\027B\012\137\012\137\012\137\012\137\027\146\012\137\027\186\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\027\190\012\137\027\206\012\137\027\214\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\tV\012\137\012\137\tZ\012\137\019\n\012\137\012\137\012\137\028&\n&\012\137\012\137\012\137\012\137\012\137\012\137\012\137\n\"\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\028F\012\137\012\137\003*\012\137\012\137\n\n\030*\028\134\028\178\012\137\012\137\012\137\012\137\012\137\028\194\012\137\012\137\012\137\028\214\012\137\012\137\t\166\012\137\012\137\029\002\012\137\012\137\029\006\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\029\018\0296\012\137\012\137\012\137\012\137\004\141\004\141\n\022\030\130\030\170\004\141\029\"\004\141\004\141\n\154\004\141\004\141\004\141\004\141\003\142\004\141\004\141\003\146\004\141\004\141\004\141 \014\004\141\004\141\004\141\004\141\n\210\004\141 \170\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141 \186\004\141\014\030\004\141!6\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\011.\004\141\004\141\018&\004\141\018N\004\141\004\141\004\141!\166\011\014\004\141\004\141\004\141\004\141\004\141\004\141\004\141!\206\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141!\230\012f\r\138\tJ\004\141\004\141\"\178\"\210#\n\001n\004\141\004\141\004\141\004\141\004\141\012\198\004\141\004\141\004\141\012\222\004\141\012n\001v\r\146\004\141\r>\004\141\004\141\r^\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\004\141\rz\004\141\004\141\004\141\004\141\004\141\012\249\012\249\r\142\001\134\004\154\012\249\r\242\002\222\012\249\r\250\002\150\012\249\012\249\012\249\014\006\003b\012\249\031\210\012\249\012\249\012\249\025\238\012\249\012\249\012\249\001\214\001\150\012\249\004\194\003n\012\249\012\249\012\249\012\249\012\249\012\249\012\249\014J\003r\014R\t\182\004\218\012\249\012\249\012\249\012\249\012\249\t\210\t\214\012\249\025\134\t\230\001\194 \n\012\249\005>\012\249\012\249\003Z\001\202\005v\t\238\012\249\012\249\012\249\011z\011~\011\138\005\130\012\249\007&\012\249\012\249\012\249\012\249\012\249\012\249\012\249\012\249\012\249\005\134\012\249\012\249\016\186\012\249\012\249\016\194\024\242\000\000\000\000\0072\0076\012\249\012\249\012\249\000\000\012\249\012\249\012\249\000\000\012\249\012\249\000\000\012\249\012\249\000\000\012\249\012\249\000\000\012\249\012\249\012\249\012\249\012\249\012\249\007:\011\146\012\249\012\249\012\249\011\170\003\238\000\000\000\000\012\249\012\249\012\249\012\249\012\245\012\245\000\000\000\000\000\000\012\245\000\000\002\222\012\245\000\000\002\150\012\245\012\245\012\245\000\000\003b\012\245\000\000\012\245\012\245\012\245\000\000\012\245\012\245\012\245\001\214\000\000\012\245\000\000\003n\012\245\012\245\012\245\012\245\012\245\012\245\012\245\000\000\003r\000\000\t\182\000\000\012\245\012\245\012\245\012\245\012\245\t\210\t\214\012\245\000\000\t\230\001\194\000\000\012\245\000\000\012\245\012\245\003Z\000\000\000\000\t\238\012\245\012\245\012\245\011z\011~\011\138\000\000\012\245\007&\012\245\012\245\012\245\012\245\012\245\012\245\012\245\012\245\012\245\000\000\012\245\012\245\000\000\012\245\012\245\000\000\000\000\000\000\000\000\0072\0076\012\245\012\245\012\245\000\000\012\245\012\245\012\245\000\000\012\245\012\245\000\000\012\245\012\245\000\000\012\245\012\245\000\000\012\245\012\245\012\245\012\245\012\245\012\245\007:\011\146\012\245\012\245\012\245\011\170\003\238\000\000\000\000\012\245\012\245\012\245\012\245\002Q\002Q\000\000\000\000\000\000\002Q\000\000\002\222\002Q\000\000\002\150\002Q\r\234\002Q\000\000\003b\002Q\000\000\002Q\002Q\002Q\000\000\002Q\002Q\002Q\001\214\000\000\014\002\000\000\003n\002Q\002Q\002Q\002Q\002Q\014\n\002Q\000\000\003r\000\000\t\182\000\000\002Q\002Q\002Q\002Q\002Q\t\210\t\214\002Q\000\000\t\230\001\194\000\000\002Q\000\000\002Q\002Q\003Z\000\000\000\000\t\238\002Q\002Q\002Q\011z\011~\011\138\000\000\014\018\007&\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\000\000\012f\r\138\000\000\002Q\002Q\000\000\000\000\000\000\000\000\0072\0076\002Q\002Q\002Q\000\000\002Q\002Q\002Q\000\000\002Q\014\026\000\000\018v\002Q\000\000\002Q\002Q\000\000\002Q\002Q\002Q\002Q\002Q\002Q\007:\011\146\002Q\002Q\002Q\011\170\003\238\000\000\000\000\002Q\002Q\002Q\002Q\005\205\005\246\005\205\000\000\005\205\005\205\005\205\005\205\005\205\005\205\005\205\b\225\005\205\000\000\005\205\005\205\000\000\005\205\005\205\005\205\002\r\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\b\225\005\205\005\205\000\000\b\225\005\205\005\205\005\002\005\205\005\205\005\205\005\205\005\205\006\146\005\205\005\205\005\205\005\205\005\205\000\000\005\205\005\205\005\205\005\205\005\205\000\000\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\000\242\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\001j\004U\005\205\004U\004U\005\205\005\205\005\205\000\000\005\205\000\000\000\000\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\005\205\022\206\b\225\005\205\005\205\000\000\005\205\000\000\000\000\005\205\003N\005\194\011\134\000\000\005\205\000\000\000\000\0226\000\000\031\178\000\000\005\205\005\205\005\205\003V\022\178\005\205\005\205\005\205\005\205\002\153\002\153\005\205\005\018\000\000\002\153\000\000\002\222\002\153\031\182\002\150\002\153\r\234\002\153\000\000\003b\002\153\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\001\214\000\000\014\002\000\000\003n\002\153\002\153\002\153\002\153\002\153\014\n\002\153\000\000\003r\b\222\t\182\000\000\002\153\002\153\002\153\002\153\002\153\t\210\t\214\002\153\000\000\t\230\001\194\000\000\002\153\000\000\002\153\002\153\003Z\b\226\000\000\t\238\002\153\002\153\002\153\011z\011~\011\138\000\000\014\018\007&\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153 \030\002\153\002\153\000\000\000\000\000\000\000\000\0072\0076\002\153\002\153\002\153\000\000\002\153\002\153\002\153\003.\002\153\000\000\rb\000\242\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\002\153\002\153\002\153\007:\011\146\002\153\002\153\002\153\011\170\003\238\000\000\000\000\002\153\002\153\002\153\002\153\000\129\000\000\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\129\000\000\000\129\000\129\000\000\000\129\000\129\000\000\bb\000\129\000\129\b\"\000\129\000\129\000\129\000\129\000\000\000\129\b\170\000\129\000\129\000\000\b\182\000\129\000\129\011\213\000\129\000\129\000\129\000\000\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\000\021\138\000\129\000\129\000\000\011\213\000\129\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\005\234\007a\000\129\000\000\000\000\000\129\000\000\000\129\005\218\000\129\002!\002!\022\138\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\129\002!\000\129\t\249\000\000\002\222\000\226\t\249\002\150\000\000\000\129\000\000\000\000\000\n\000\000\000\000\000\129\000\129\000\129\000\129\007a\000\000\000\129\000\129\000\129\000\129\002!\022\186\002!\000\000\002!\002!\002!\002!\002!\002!\002!\024\194\002!\007a\002!\002!\000\000\002!\002!\000\000\022\194\002!\t\249\024\014\002!\002!\002!\002!\000\000\002!\000\000\002!\002!\000\n\000\000\002!\002!\023\166\002!\002!\002!\000\000\002!\t\249\002!\002!\002!\002!\002!\000\000\002!\002!\002!\002!\002!\000\000\000\000\002!\002!\001\206\001\210\002!\002!\0076\002!\002!\002!\002!\002!\002!\002!\002!\002!\000\000\024r\002!\000\000\0065\001\214\002\154\002!\004\150\002!\b\193\000\000\000\000\002!\002!\002!\002!\002!\002!\002!\002!\000\000\000\000\t\018\002!\000\000\002!\0065\000\000\t\026\r\165\002\182\003\182\b\193\002!\000\000\0036\000\000\003Z\003\150\003\162\002!\002!\002!\000\000\003\174\002!\002!\002!\002!\002y\002y\000\000\002\018\005\205\002y\002\150\000\000\002y\000\000\r\165\002y\003\178\002y\000\000\000\000\014\150\012\006\002y\002y\002y\000\000\002y\002y\002y\r\165\000\000\000\000\r\165\017r\014\254\015F\015^\015\022\015v\r\165\002y\012\n\000\000\r\165\000\000\005\205\002y\002y\015\142\015\166\002y#\002\001\226\002y\000\000\000\000\005\205\000\000\002y\000\000\015\190\002y\000\000\000\000\000\000\023\166\002y\002y\000\242\000\000\000\000\000\000\011\250\000\000\000\000\002y\002y\014\174\015.\015\214\015\238\016\030\002y\002y\000\000\000\242\002y\000\000\002y\0166\000\000\0076\000\000\000\000\000\000\000\000\002y\002y\016N\000\000\002y\002y\020\130\000\000\002y\000\000 Z\005\246\002y\000\000\002y\002y\000\000\016\174\002y\016\230\016\006\002y\002y\004I\000\000\002y\016f\002y\t\150\000\000 ^\000\000\002y\002y\016~\016\150\003\137\003\137\012\014\000\000\005\205\003\137\004I\000\000\003\137\000\000\t\153\003\137\000\000\003\137\000\000\000\000\014\150\006\146\003\137\003\137\003\137\022\026\003\137\003\137\003\137\000\000\000\000\000\000\005\205\004I\014\254\015F\015^\015\022\015v\000\000\003\137\006\205\000\242\000\000\t\153\002\005\003\137\003\137\015\142\015\166\003\137\000\000\000\000\003\137\004I\000\000\005\205\000\000\003\137\t\153\015\190\003\137\t\153\012R\000\000\000\000\003\137\003\137\000\242\t\153\000\000\000\000\000\000\t\153\000\000\003\137\003\137\014\174\015.\015\214\015\238\016\030\003\137\003\137\000\000\000\000\003\137\000\000\003\137\0166\000\000\000\000\000\000\006\205\000\000\000\000\003\137\003\137\016N\000\000\003\137\003\137\003\137\002\014\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\016\174\003\137\016\230\016\006\003\137\003\137\000\000\000\000\003\137\016f\003\137\028\162\000\000\000\000\000\000\003\137\003\137\016~\016\150\n\181\n\181\rR\022\030\000\000\n\181\022*\002\222\n\181\000\000\002\150\n\181\014r\n\181\000\000\003b\n\181\000\000\n\181\n\181\n\181\000\000\n\181\n\181\n\181\001\214\000\000\000\000\000\000\003n\n\181\n\181\n\181\n\181\n\181\000\000\n\181\000\000\003r\000\000\t\182\000\000\n\181\n\181\n\181\n\181\n\181\t\210\t\214\n\181\000\000\t\230\011\142\000\000\n\181\000\000\n\181\n\181\003Z\000\000\000\000\t\238\n\181\n\181\n\181\011z\011~\011\138\000\000\000\000\007&\n\181\n\181\n\181\n\181\n\181\n\181\n\181\n\181\n\181\000\000\012f\r\138\000\000\n\181\n\181\000\000\000\000\000\000\000\000\0072\0076\n\181\n\181\n\181\000\000\n\181\n\181\n\181\000\000\n\181\012n\000\000\r\146\n\181\000\000\n\181\n\181\011\001\n\181\n\181\n\181\n\181\n\181\n\181\007:\011\146\n\181\n\181\n\181\011\170\003\238\000\000\000\000\n\181\n\181\n\181\n\181\002\165\002\165\002!\002!\024\154\002\165\000\000\006\014\002\165\000\000\011\001\002\165\000\000\002\165\000\000\000\000\002\165\002!\002\165\002\165\002\165\000\000\002\165\002\165\002\165\nf\000\000\000\000\011\001\000\n\002\165\002\165\002\165\002\165\002\165\011\001\002\165\000\000\000\000\011\001\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\011\198\001\194\000\000\002\165\000\000\002\165\002\165\000\000\000\000\002!\021*\002\165\002\165\002\165\021>\021R\021b\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\002\165\002\165\002\165\002\165\000\000\012f\r\138\000\000\002\165\002\165\000\000\011\238\000\000\000\000\000\000\000\000\002\165\002\165\002\165\005\218\002\165\002\165\002\165\000\000\002\165\012n\000\000\r\146\002\165\000\000\002\165\002\165\006\197\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\006\197\006\014\000\000\000\000\002\165\002\165\002\165\002\165\002\145\002\145\000\000\000\000\000\000\002\145\000\000\000\000\002\145\000\000\025.\002\145\000\000\002\145\000\000\000\000\002\145\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\006\197\000\000\000\000\000\000\025\026\002\145\002\145\002\145\002\145\002\145\000\000\002\145\011\198\021\166\000\000\000\000\000\000\002\145\002\145\002\145\002\145\002\145\021*\000\000\002\145\bu\021>\021R\021b\002\145\006\197\002\145\002\145\006\197\000\000\000\000\000\000\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\bu\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\012f\r\138\000\000\002\145\002\145 n\000\000\000\000\000\000\000\000\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\002\145\012n\000\000\r\146\002\145\000\000\002\145\002\145\t\173\002\145\002\145\002\145\002\145\002\145\002\145\004I\000\000\002\145\002\145\002\145\005\154\000\000\000\000\000\000\002\145\002\145\002\145\002\145\n\201\n\201\000\000\000\000\000\000\n\201\004I\006\014\n\201\000\000\t\173\n\201\005\158\n\201\000\000\000\000\n\201\000\000\n\201\n\201\n\201\000\000\n\201\n\201\n\201\t\173\000\000\000\000\b\"\004I\n\201\n\201\n\201\n\201\n\201\t\173\n\201\006\205\000\000\t\173\000\000\000\000\n\201\n\201\n\201\n\201\n\201\b\233\000\000\n\201\004I\007n\006\018\000\000\n\201\000\000\n\201\n\201\000\000\000\000\000\000\006\234\n\201\n\201\n\201\b\230\b\233\006\246\000\000\000\000\b\233\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\000\000\012f\r\138\006\210\n\201\n\201\000\000\000\000\000\000\006\205\000\000\005\218\n\201\n\201\n\201\000\000\n\201\n\201\n\201\002\202\n\201\012n\000\000\r\146\n\201\023\150\n\201\n\201\002\150\n\201\n\201\n\201\n\201\n\201\n\201\000\000\000\000\n\201\n\201\n\201\000\000\000\000\000\000\003\210\n\201\n\201\n\201\n\201\002\161\002\161\000\000\b\233\000\000\002\161\025\n\002\222\002\161\000\000\000\000\002\161\000\000\002\161\000\000\000\000\002\161\000\000\002\161\002\161\002\161\023\154\002\161\002\161\002\161\025\026\000\000\000\000\rR\000\000\002\161\002\161\002\161\002\161\002\161\023\166\002\161\000\000\014r\0042\003\222\000\000\002\161\002\161\002\161\002\161\002\161\003\150\003\162\002\161\b\129\018z\006\002\003\174\002\161\000\000\002\161\002\161\000\000\000\000\000\000\0076\002\161\002\161\002\161\018\162\000\000\018\202\000\000\000\000\b\129\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\000\000\012f\r\138\000\000\002\161\002\161\000\000\000\000\000\000!J\000\000\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\002\161\012n\000\000\r\146\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\002\161\002\161\005\166\002\222\000\000\000\000\002\161\002\161\002\161\002\161\ny\ny\000\000\000\000\000\000\ny\000\000\000\000\ny\000\000\000\000\ny\005\170\ny\000\000\000\000\ny\000\000\ny\ny\ny\000\000\ny\ny\ny\000\000\000\000\000\000\000\000\b\217\ny\ny\ny\ny\ny\000\000\ny\r\150\006\002\000\000\000\000\000\000\ny\ny\ny\ny\ny\000\000\b\217\ny\000\000\019\206\b\217\019\218\ny\000\000\ny\ny\000\000\000\000\000\000\000\000\ny\ny\ny\000\000\000\000\000\000\000\000\000\000\000\000\ny\ny\ny\ny\ny\ny\ny\ny\ny\000\000\012f\r\138\000\000\ny\ny\000\000\000\000\000\000\000\000\000\000\000\000\ny\ny\ny\000\000\ny\ny\ny\000\000\ny\012n\000\000\r\146\ny\000\000\ny\ny\000\000\ny\ny\ny\ny\ny\ny\000\000\000\000\ny\ny\ny\000\000\000\000\000\000\b\217\ny\ny\ny\ny\002\149\002\149\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\007\n\000\000\002\149\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\000\000\000\000\b\245\000\000\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\b\245\000\000\002\149\000\000\b\245\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\000\000\012f\r\138\000\000\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\002\149\012n\000\000\r\146\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\002\149\002\149\000\000\000\000\002\149\002\149\002\149\000\000\000\000\007\022\000\000\002\149\002\149\002\149\002\149\n\161\n\161\000\000\000\000\000\000\n\161\000\000\000\000\n\161\000\000\000\000\n\161\000\000\n\161\000\000\000\000\n\161\000\000\n\161\n\161\n\161\000\000\n\161\n\161\n\161\000\000\000\000\000\000\000\000\000\000\n\161\n\161\n\161\n\161\n\161\000\000\n\161\000\000\000\000\000\000\000\000\000\000\n\161\n\161\n\161\n\161\n\161\000\000\000\000\n\161\000\000\000\000\000\000\000\000\n\161\000\000\n\161\n\161\000\000\000\000\000\000\000\000\n\161\n\161\n\161\000\000\000\000\000\000\000\000\000\000\000\000\n\161\n\161\n\161\n\161\n\161\n\161\n\161\n\161\n\161\000\000\012f\r\138\000\000\n\161\n\161\000\000\000\000\000\000\000\000\000\000\000\000\n\161\n\161\n\161\000\000\n\161\n\161\n\161\000\000\n\161\012n\000\000\r\146\n\161\000\000\n\161\n\161\000\000\n\161\n\161\n\161\n\161\n\161\n\161\000\000\000\000\n\161\n\161\n\161\000\000\000\000\000\000\000\000\n\161\n\161\n\161\n\161\n\221\n\221\000\000\000\000\000\000\n\221\000\000\000\000\n\221\000\000\000\000\n\221\000\000\n\221\000\000\000\000\n\221\000\000\n\221\n\221\n\221\000\000\n\221\n\221\n\221\000\000\000\000\000\000\000\000\000\000\n\221\n\221\n\221\n\221\n\221\000\000\n\221\000\000\000\000\000\000\000\000\000\000\n\221\n\221\n\221\n\221\n\221\000\000\000\000\n\221\000\000\000\000\000\000\000\000\n\221\000\000\n\221\n\221\000\000\000\000\000\000\000\000\n\221\n\221\n\221\000\000\000\000\000\000\000\000\000\000\000\000\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\000\000\012f\r\138\000\000\n\221\n\221\000\000\000\000\000\000\000\000\000\000\000\000\n\221\n\221\n\221\000\000\n\221\n\221\n\221\000\000\n\221\012n\000\000\r\146\n\221\000\000\n\221\n\221\000\000\n\221\n\221\n\221\n\221\n\221\n\221\000\000\000\000\n\221\n\221\n\221\000\000\000\000\000\000\000\000\n\221\n\221\n\221\n\221\n\141\n\141\000\000\000\000\000\000\n\141\000\000\000\000\n\141\000\000\000\000\n\141\000\000\n\141\000\000\000\000\n\141\000\000\n\141\n\141\n\141\000\000\n\141\n\141\n\141\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\000\000\n\141\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\000\000\000\000\n\141\000\000\000\000\000\000\000\000\n\141\000\000\n\141\n\141\000\000\000\000\000\000\000\000\n\141\n\141\n\141\000\000\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\n\141\n\141\n\141\n\141\000\000\012f\r\138\000\000\n\141\n\141\000\000\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\000\000\n\141\n\141\n\141\000\000\n\141\012n\000\000\r\146\n\141\000\000\n\141\n\141\000\000\n\141\n\141\n\141\n\141\n\141\n\141\000\000\000\000\n\141\n\141\n\141\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\003\185\003\185\000\000\000\000\000\000\003\185\000\000\005\205\003\185\000\000\000\000\003\185\000\000\003\185\000\000\000\000\014\150\000\000\003\185\003\185\003\185\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\015\142\015\166\003\185\000\000\000\000\003\185\000\000\000\000\000\000\000\000\003\185\000\000\015\190\003\185\000\000\000\000\000\000\000\000\003\185\003\185\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\014\174\015.\015\214\015\238\016\030\003\185\003\185\000\000\000\000\003\185\000\000\003\185\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\016N\000\000\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\016\174\003\185\016\230\016\006\003\185\003\185\000\000\000\000\003\185\016f\003\185\029\130\000\000\000\000\000\000\003\185\003\185\016~\016\150\003\213\003\213\000\000\000\000\000\000\003\213\000\000\005\205\003\213\000\000\000\000\003\213\000\000\003\213\000\000\000\000\014\150\000\000\003\213\014\234\003\213\000\000\003\213\003\213\003\213\000\000\000\000\000\000\000\000\t\005\014\254\015F\015^\015\022\015v\000\000\003\213\000\000\000\000\000\000\000\000\000\000\003\213\003\213\015\142\015\166\003\213\000\000\t\005\003\213\000\000\000\000\t\005\000\000\003\213\000\000\015\190\003\213\000\000\000\000\000\000\000\000\003\213\003\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\213\003\213\014\174\015.\015\214\015\238\016\030\003\213\003\213\000\000\000\000\003\213\000\000\003\213\0166\000\000\n\r\000\000\000\000\n\r\000\000\003\213\003\213\016N\000\000\003\213\003\213\003\213\000\000\003\213\000\000\000\000\000\000\003\213\000\000\003\213\003\213\028\170\016\174\003\213\016\230\016\006\003\213\003\213\000\000\000\000\003\213\016f\003\213\026\n\000\000\000\000\t\005\003\213\003\213\016~\016\150\001\n\000\000\000\006\n\r\n\r\000\000\002\234\002\222\006V\003\022\002\150\003.\003\"\000\000\rb\003b\001\014\n\r\000\000\000\000\011\202\000\000\005b\000\000\000\000\001\214\000\000\000\000\000\000\t\234\001\022\011\206\011\210\001\"\001&\000\000\000\000\000\000\003r\000\000\t\182\000\000\011\214\n\r\012B\012F\000\000\t\210\t\214\000\000\t\218\t\230\t\242\012J\011F\000\000\001>\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\n\r\000\000\001B\001F\001J\001N\001R\000\000\011\217\012v\001V\000\000\000\000\011r\001Z\002\222\012\130\012\154\r\154\0072\0076\011Y\002\226\001^\000\000\011f\000\000\000\000\011\254\000\000\001b\011\217\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\158\b\210\000\000\000\000\007:\011\146\000\000\001\162\000\000\021\026\003\238\r\174\000\000\001\170\000\000\001\174\001\178\003A\003A\011n\006\002\000\000\003A\011Y\000\000\003A\003Z\000\000\003A\000\000\003A\000\000\000\000\014\150\000\000\003A\003A\003A\000\000\003A\003A\003A\000\000\000\000\011Y\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003A\011\226\000\000\000\000\000\000\000\000\003A\003A\015\142\015\166\003A\000\000\000\000\003A\000\000\000\000\000\000\000\000\003A\000\000\015\190\003A\000\000\000\000\000\000\011Y\003A\003A\000\242\004\150\000\000\000\000\011Y\000\000\000\000\003A\003A\014\174\015.\015\214\015\238\016\030\003A\003A\000\000\000\000\003A\000\000\003A\0166\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\016N\000\000\003A\003A\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\016\174\003A\016\230\016\006\003A\003A\015=\000\000\003A\016f\003A\000\000\000\000\000\000\000\000\003A\003A\016~\016\150\003\001\003\001\000\000\000\000\000\000\003\001\015=\015=\003\001\000\000\015=\003\001\000\000\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\000\242\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\014\174\003\001\003\001\003\001\003\001\003\001\003\001\000\000\015=\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003)\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\014\150\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\015\142\015\166\003)\000\000\000\000\003)\000\000\000\000\000\000\000\000\003)\000\000\015\190\003)\000\000\000\000\000\000\000\000\003)\003)\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\014\174\015.\015\214\015\238\016\030\003)\003)\000\000\000\000\003)\000\000\003)\0166\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\016N\000\000\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\003)\003)\003)\016\006\003)\003)\000\000\000\000\003)\016f\003)\000\000\000\000\000\000\000\000\003)\003)\016~\016\150\003=\003=\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\000\000\000\000\003=\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\000\000\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\000\000\000\000\003=\000\000\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\003=\003=\003=\003=\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\rR\003=\003=\003=\003=\003=\000\000\000\000\003=\003=\014r\000\000\000\000\000\000\000\000\003=\003=\003=\003=\n\197\n\197\000\000\000\000\000\000\n\197\000\000\000\000\n\197\000\000\000\000\n\197\000\000\n\197\000\000\000\000\n\197\000\000\n\197\n\197\n\197\000\000\n\197\n\197\n\197\000\000\000\000\000\000\000\000\000\000\n\197\n\197\n\197\n\197\n\197\000\000\n\197\000\000\000\000\000\000\000\000\000\000\n\197\n\197\n\197\n\197\n\197\000\000\000\000\n\197\000\000\000\000\000\000\000\000\n\197\000\000\n\197\n\197\000\000\000\000\000\000\000\000\n\197\n\197\n\197\000\000\000\000\000\000\000\000\000\000\000\000\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\000\000\000\000\n\197\000\000\n\197\n\197\000\000\000\000\000\000\000\000\000\000\000\000\n\197\n\197\n\197\000\000\n\197\n\197\n\197\000\000\n\197\000\000\000\000\000\000\n\197\000\000\n\197\n\197\000\000\rR\n\197\n\197\n\197\n\197\n\197\000\000\000\000\n\197\n\197\014r\000\000\000\000\000\000\000\000\n\197\n\197\n\197\n\197\002u\002u\000\000\000\000\000\000\002u\000\000\000\000\002u\000\000\000\000\002u\000\000\002u\000\000\000\000\002u\000\000\002u\002u\002u\000\000\002u\002u\002u\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\000\000\002u\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\000\000\000\000\002u\000\000\000\000\000\000\000\000\002u\000\000\002u\002u\000\000\000\000\000\000\000\000\002u\002u\002u\000\000\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\002u\002u\002u\002u\000\000\000\000\002u\000\000\002u\002u\000\000\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\000\000\002u\002u\002u\000\000\002u\000\000\000\000\000\000\002u\000\000\002u\002u\000\000\rR\002u\002u\002u\002u\002u\000\000\000\000\002u\002u\014r\000\000\000\000\000\000\000\000\002u\002u\002u\002u\n\173\n\173\000\000\000\000\000\000\n\173\000\000\000\000\n\173\000\000\000\000\n\173\000\000\n\173\000\000\000\000\014\150\000\000\n\173\n\173\n\173\000\000\n\173\n\173\n\173\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\n\173\000\000\000\000\000\000\000\000\000\000\n\173\n\173\015\142\015\166\n\173\000\000\000\000\n\173\000\000\000\000\000\000\000\000\n\173\000\000\015\190\n\173\000\000\000\000\000\000\000\000\n\173\n\173\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\173\n\173\014\174\015.\015\214\015\238\016\030\n\173\n\173\000\000\000\000\n\173\000\000\n\173\0166\000\000\000\000\000\000\000\000\000\000\000\000\n\173\n\173\016N\000\000\n\173\n\173\n\173\000\000\n\173\000\000\000\000\000\000\n\173\000\000\n\173\n\173\000\000\n\173\n\173\n\173\016\006\n\173\n\173\000\000\000\000\n\173\016f\n\173\000\000\000\000\000\000\000\000\n\173\n\173\016~\016\150\003\173\003\173\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\000\000\000\000\003\173\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\000\000\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\000\000\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\000\000\000\000\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\000\000\003\173\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\rR\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\003\173\014r\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\149\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\003\149\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\000\000\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\000\000\000\000\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\000\000\003\149\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\rR\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\003\149\014r\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\002m\002m\000\000\000\000\000\000\002m\000\000\000\000\002m\000\000\000\000\002m\000\000\002m\000\000\000\000\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\000\000\000\000\000\000\002m\000\000\002m\002m\000\000\000\000\000\000\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\000\000\002m\002m\002m\000\000\002m\000\000\000\000\000\000\002m\000\000\002m\002m\000\000\rR\002m\002m\002m\002m\002m\000\000\000\000\002m\002m\014r\000\000\000\000\000\000\000\000\002m\002m\002m\002m\003\129\003\129\000\000\000\000\000\000\003\129\000\000\000\000\003\129\000\000\000\000\003\129\000\000\003\129\000\000\000\000\014\150\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\015\142\015\166\003\129\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\129\000\000\015\190\003\129\000\000\000\000\000\000\000\000\003\129\003\129\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\014\174\015.\015\214\015\238\016\030\003\129\003\129\000\000\000\000\003\129\000\000\003\129\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\016N\000\000\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\016\174\003\129\016\230\016\006\003\129\003\129\000\000\000\000\003\129\016f\003\129\000\000\000\000\000\000\000\000\003\129\003\129\016~\016\150\003\r\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\003\r\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\000\000\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\rR\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\003\r\014r\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\002i\002i\000\000\000\000\000\000\002i\000\000\000\000\002i\000\000\000\000\002i\000\000\002i\000\000\000\000\014\150\000\000\002i\002i\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\015\142\015\166\002i\000\000\000\000\002i\000\000\000\000\000\000\000\000\002i\000\000\015\190\002i\000\000\000\000\000\000\000\000\002i\002i\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\014\174\015.\015\214\015\238\016\030\002i\002i\000\000\000\000\002i\000\000\002i\0166\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\016N\000\000\002i\002i\002i\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\016\174\002i\016\230\016\006\002i\002i\000\000\000\000\002i\016f\002i\000\000\000\000\000\000\000\000\002i\002i\016~\016\150\002\221\002\221\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\002\221\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\rR\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\002\221\014r\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\003\141\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\000\000\000\000\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\000\000\003\141\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\rR\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\003\141\014r\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\157\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\003\157\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\000\000\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\000\000\000\000\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\000\000\003\157\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\rR\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\003\157\014r\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\002\181\002\181\000\000\000\000\000\000\002\181\000\000\000\000\002\181\000\000\000\000\002\181\000\000\002\181\000\000\000\000\002\181\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\rR\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\002\181\014r\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\189\002\189\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\002\189\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\rR\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\002\189\014r\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\003y\003y\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\000\000\000\000\014\150\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\015\142\015\166\003y\000\000\000\000\003y\000\000\000\000\000\000\000\000\003y\000\000\015\190\003y\000\000\000\000\000\000\000\000\003y\003y\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\014\174\015.\015\214\015\238\016\030\003y\003y\000\000\000\000\003y\000\000\003y\0166\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\016N\000\000\003y\003y\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\016\174\003y\016\230\016\006\003y\003y\000\000\000\000\003y\016f\003y\000\000\000\000\000\000\000\000\003y\003y\016~\016\150\002\217\002\217\000\000\000\000\000\000\002\217\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\000\000\000\000\014\150\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\015\022\002\217\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\014\174\015.\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\002\217\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\003\025\003\025\000\000\000\000\000\000\003\025\000\000\000\000\003\025\000\000\000\000\003\025\000\000\003\025\000\000\000\000\014\150\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\003\025\000\000\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\015\142\015\166\003\025\000\000\000\000\003\025\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\014\174\015.\015\214\015\238\003\025\003\025\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\003\025\003\025\003\025\016\006\003\025\003\025\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\002]\002]\000\000\000\000\000\000\002]\000\000\000\000\002]\000\000\000\000\002]\000\000\002]\000\000\000\000\002]\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\000\000\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\000\000\000\000\002]\000\000\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\000\000\000\000\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\002]\002]\002]\002]\000\000\000\000\002]\000\000\002]\002]\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\002]\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\002]\002]\002]\002]\002]\002]\000\000\000\000\002]\002]\014r\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002\169\002\169\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\014\150\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\015\142\015\166\002\169\000\000\000\000\002\169\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\014\174\015.\015\214\015\238\002\169\002\169\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\016\006\002\169\002\169\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\n\213\n\213\000\000\000\000\000\000\n\213\000\000\000\000\n\213\000\000\000\000\n\213\000\000\n\213\000\000\000\000\014\150\000\000\n\213\n\213\n\213\000\000\n\213\n\213\n\213\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\n\213\000\000\000\000\000\000\000\000\000\000\n\213\n\213\015\142\015\166\n\213\000\000\000\000\n\213\000\000\000\000\000\000\000\000\n\213\000\000\015\190\n\213\000\000\000\000\000\000\000\000\n\213\n\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\213\n\213\014\174\015.\015\214\015\238\016\030\n\213\n\213\000\000\000\000\n\213\000\000\n\213\0166\000\000\000\000\000\000\000\000\000\000\000\000\n\213\n\213\016N\000\000\n\213\n\213\n\213\000\000\n\213\000\000\000\000\000\000\n\213\000\000\n\213\n\213\000\000\n\213\n\213\n\213\016\006\n\213\n\213\000\000\000\000\n\213\016f\n\213\000\000\000\000\000\000\000\000\n\213\n\213\016~\016\150\002\201\002\201\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\002\201\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\014\174\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\237\002\237\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\rR\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\014r\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\003E\003E\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\000\000\000\000\003E\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\000\000\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\000\000\000\000\003E\000\000\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\003E\003E\003E\003E\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\rR\003E\003E\003E\003E\003E\000\000\000\000\003E\003E\014r\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003\t\003\t\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\014\150\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\015\142\015\166\003\t\000\000\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\014\174\015.\015\214\015\238\003\t\003\t\003\t\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\003\t\003\t\003\t\016\006\003\t\003\t\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003m\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\003m\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\000\000\000\000\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\003m\003m\003m\003m\000\000\000\000\003m\000\000\003m\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\rR\003m\003m\003m\003m\003m\000\000\000\000\003m\003m\014r\000\000\000\000\000\000\000\000\003m\003m\003m\003m\002\197\002\197\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\002\197\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\rR\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\002\197\014r\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\n\177\n\177\000\000\000\000\000\000\n\177\000\000\000\000\n\177\000\000\000\000\n\177\000\000\n\177\000\000\000\000\n\177\000\000\n\177\n\177\n\177\000\000\n\177\n\177\n\177\000\000\000\000\000\000\000\000\000\000\n\177\n\177\n\177\n\177\n\177\000\000\n\177\000\000\000\000\000\000\000\000\000\000\n\177\n\177\n\177\n\177\n\177\000\000\000\000\n\177\000\000\000\000\000\000\000\000\n\177\000\000\n\177\n\177\000\000\000\000\000\000\000\000\n\177\n\177\n\177\000\000\000\000\000\000\000\000\000\000\000\000\n\177\n\177\n\177\n\177\n\177\n\177\n\177\n\177\n\177\000\000\000\000\n\177\000\000\n\177\n\177\000\000\000\000\000\000\000\000\000\000\000\000\n\177\n\177\n\177\000\000\n\177\n\177\n\177\000\000\n\177\000\000\000\000\000\000\n\177\000\000\n\177\n\177\000\000\rR\n\177\n\177\n\177\n\177\n\177\000\000\000\000\n\177\n\177\014r\000\000\000\000\000\000\000\000\n\177\n\177\n\177\n\177\002\213\002\213\000\000\000\000\000\000\002\213\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\000\000\000\000\002\213\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\rR\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\002\213\014r\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\003q\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\014\150\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\015\142\015\166\003q\000\000\000\000\003q\000\000\000\000\000\000\000\000\003q\000\000\015\190\003q\000\000\000\000\000\000\000\000\003q\003q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\014\174\015.\015\214\015\238\016\030\003q\003q\000\000\000\000\003q\000\000\003q\0166\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\016N\000\000\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\016\174\003q\016\230\016\006\003q\003q\000\000\000\000\003q\016f\003q\000\000\000\000\000\000\000\000\003q\003q\016~\016\150\002\209\002\209\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\000\000\000\000\014\150\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\015\022\002\209\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\014\174\015.\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\245\002\245\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\002\245\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\rR\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\002\245\014r\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\169\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\014\150\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\015\142\015\166\003\169\000\000\000\000\003\169\000\000\000\000\000\000\000\000\003\169\000\000\015\190\003\169\000\000\000\000\000\000\000\000\003\169\003\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\014\174\015.\015\214\015\238\016\030\003\169\003\169\000\000\000\000\003\169\000\000\003\169\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\016N\000\000\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\016\174\003\169\016\230\016\006\003\169\003\169\000\000\000\000\003\169\016f\003\169\000\000\000\000\000\000\000\000\003\169\003\169\016~\016\150\002\193\002\193\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\000\000\000\000\002\193\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\014\174\002\193\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\002\193\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\nq\nq\000\000\000\000\000\000\nq\000\000\000\000\nq\000\000\000\000\nq\000\000\nq\000\000\000\000\014\150\000\000\nq\nq\nq\000\000\nq\nq\nq\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\nq\000\000\000\000\000\000\000\000\000\000\nq\nq\015\142\015\166\nq\000\000\000\000\nq\000\000\000\000\000\000\000\000\nq\000\000\015\190\nq\000\000\000\000\000\000\000\000\nq\nq\000\242\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\014\174\015.\015\214\015\238\016\030\nq\nq\000\000\000\000\nq\000\000\nq\0166\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\016N\000\000\nq\nq\nq\000\000\nq\000\000\000\000\000\000\nq\000\000\nq\nq\000\000\nq\nq\nq\016\006\nq\nq\000\000\000\000\nq\016f\nq\000\000\000\000\000\000\000\000\nq\nq\016~\016\150\n\133\n\133\000\000\000\000\000\000\n\133\000\000\000\000\n\133\000\000\000\000\n\133\000\000\n\133\000\000\000\000\014\150\000\000\n\133\n\133\n\133\000\000\n\133\n\133\n\133\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\n\133\000\000\000\000\000\000\000\000\000\000\n\133\n\133\015\142\015\166\n\133\000\000\000\000\n\133\000\000\000\000\000\000\000\000\n\133\000\000\015\190\n\133\000\000\000\000\000\000\000\000\n\133\n\133\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\133\n\133\014\174\015.\015\214\015\238\016\030\n\133\n\133\000\000\000\000\n\133\000\000\n\133\0166\000\000\000\000\000\000\000\000\000\000\000\000\n\133\n\133\016N\000\000\n\133\n\133\n\133\000\000\n\133\000\000\000\000\000\000\n\133\000\000\n\133\n\133\000\000\n\133\n\133\n\133\016\006\n\133\n\133\000\000\000\000\n\133\016f\n\133\000\000\000\000\000\000\000\000\n\133\n\133\016~\016\150\003\005\003\005\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\003\005\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\rR\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\003\005\014r\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\002\157\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\002\157\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\014>\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\003a\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\014\150\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\015\142\015\166\003a\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\014\174\015.\015\214\003a\003a\003a\003a\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\003a\003a\003a\016\006\003a\003a\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\003a\002q\002q\000\000\000\000\000\000\002q\000\000\000\000\002q\000\000\000\000\002q\000\000\002q\000\000\000\000\014\150\000\000\002q\002q\002q\000\000\002q\002q\002q\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\002q\000\000\000\000\000\000\000\000\000\000\002q\002q\015\142\015\166\002q\000\000\000\000\002q\000\000\000\000\000\000\000\000\002q\000\000\015\190\002q\000\000\000\000\000\000\000\000\002q\002q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002q\002q\014\174\015.\015\214\015\238\016\030\002q\002q\000\000\000\000\002q\000\000\002q\0166\000\000\000\000\000\000\000\000\000\000\000\000\002q\002q\016N\000\000\002q\002q\002q\000\000\002q\000\000\000\000\000\000\002q\000\000\002q\002q\000\000\016\174\002q\016\230\016\006\002q\002q\000\000\000\000\002q\016f\002q\000\000\000\000\000\000\000\000\002q\002q\016~\016\150\n\157\n\157\000\000\000\000\000\000\n\157\000\000\000\000\n\157\000\000\000\000\n\157\000\000\n\157\000\000\000\000\n\157\000\000\n\157\n\157\n\157\000\000\n\157\n\157\n\157\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\000\000\n\157\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\000\000\000\000\000\000\000\000\n\157\000\000\n\157\n\157\000\000\000\000\000\000\000\000\n\157\n\157\n\157\000\000\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\000\000\n\157\n\157\000\000\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\000\000\n\157\n\157\n\157\000\000\n\157\000\000\000\000\000\000\n\157\000\000\n\157\n\157\000\000\rR\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\n\157\014r\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\002\205\002\205\000\000\000\000\000\000\002\205\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\000\000\000\000\002\205\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\rR\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\002\205\014r\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\003\021\003\021\000\000\000\000\000\000\003\021\000\000\000\000\003\021\000\000\000\000\003\021\000\000\003\021\000\000\000\000\003\021\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\000\000\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\rR\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\003\021\014r\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\153\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\014\150\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\015\142\015\166\003\153\000\000\000\000\003\153\000\000\000\000\000\000\000\000\003\153\000\000\015\190\003\153\000\000\000\000\000\000\000\000\003\153\003\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\014\174\015.\015\214\015\238\016\030\003\153\003\153\000\000\000\000\003\153\000\000\003\153\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\016N\000\000\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\016\174\003\153\016\230\016\006\003\153\003\153\000\000\000\000\003\153\016f\003\153\000\000\000\000\000\000\000\000\003\153\003\153\016~\016\150\003\181\003\181\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\000\000\000\000\003\181\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\000\000\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\000\000\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\000\000\000\000\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\000\000\003\181\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\rR\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\003\181\014r\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\177\003\177\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\000\000\000\000\014\150\000\000\003\177\003\177\003\177\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\015\142\015\166\003\177\000\000\000\000\003\177\000\000\000\000\000\000\000\000\003\177\000\000\015\190\003\177\000\000\000\000\000\000\000\000\003\177\003\177\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\014\174\015.\015\214\015\238\016\030\003\177\003\177\000\000\000\000\003\177\000\000\003\177\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\016N\000\000\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\016\174\003\177\016\230\016\006\003\177\003\177\000\000\000\000\003\177\016f\003\177\000\000\000\000\000\000\000\000\003\177\003\177\016~\016\150\003\133\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\003\133\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\000\000\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\rR\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\003\133\014r\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003i\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\014\150\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\015\142\015\166\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\003i\000\000\015\190\003i\000\000\000\000\000\000\000\000\003i\003i\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\014\174\015.\015\214\015\238\016\030\003i\003i\000\000\000\000\003i\000\000\003i\0166\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\016N\000\000\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\016\174\003i\016\230\016\006\003i\003i\000\000\000\000\003i\016f\003i\000\000\000\000\000\000\000\000\003i\003i\016~\016\150\002\241\002\241\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\014\150\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\015\022\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\014\174\015.\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\003\165\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\000\000\000\000\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\000\000\003\165\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\rR\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\003\165\014r\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\002a\002a\000\000\000\000\000\000\002a\000\000\000\000\002a\000\000\000\000\002a\000\000\002a\000\000\000\000\002a\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\002a\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\002a\014r\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002\253\002\253\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\002\253\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\rR\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\002\253\014r\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\003u\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\003u\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\000\000\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\000\000\000\000\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\003u\003u\003u\003u\000\000\000\000\003u\000\000\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\rR\003u\003u\003u\003u\003u\000\000\000\000\003u\003u\014r\000\000\000\000\000\000\000\000\003u\003u\003u\003u\nu\nu\000\000\000\000\000\000\nu\000\000\000\000\nu\000\000\000\000\nu\000\000\nu\000\000\000\000\nu\000\000\nu\nu\nu\000\000\nu\nu\nu\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\000\000\nu\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\000\000\000\000\nu\000\000\000\000\000\000\000\000\nu\000\000\nu\nu\000\000\000\000\000\000\000\000\nu\nu\nu\000\000\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\nu\nu\nu\nu\000\000\000\000\nu\000\000\nu\nu\000\000\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\000\000\nu\nu\nu\000\000\nu\000\000\000\000\000\000\nu\000\000\nu\nu\000\000\rR\nu\nu\nu\nu\nu\000\000\000\000\nu\nu\014r\000\000\000\000\000\000\000\000\nu\nu\nu\nu\002I\002I\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\rR\002I\002I\002I\002I\002I\000\000\000\000\002I\002I\014r\000\000\000\000\000\000\000\000\002I\002I\002I\002I\003!\003!\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\000\000\000\000\014\150\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\015\142\015\166\003!\000\000\000\000\003!\000\000\000\000\000\000\000\000\003!\000\000\015\190\003!\000\000\000\000\000\000\000\000\003!\003!\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\014\174\015.\015\214\015\238\016\030\003!\003!\000\000\000\000\003!\000\000\003!\0166\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\016N\000\000\003!\003!\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\003!\003!\003!\016\006\003!\003!\000\000\000\000\003!\016f\003!\000\000\000\000\000\000\000\000\003!\003!\016~\016\150\0035\0035\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\000\000\000\000\0035\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\000\000\0035\000\000\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\0035\0035\0035\0035\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\rR\0035\0035\0035\0035\0035\000\000\000\000\0035\0035\014r\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0031\0031\000\000\000\000\000\000\0031\000\000\000\000\0031\000\000\000\000\0031\000\000\0031\000\000\000\000\014\150\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\0031\000\000\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\015\142\015\166\0031\000\000\000\000\0031\000\000\000\000\000\000\000\000\0031\000\000\015\190\0031\000\000\000\000\000\000\000\000\0031\0031\000\242\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\014\174\015.\015\214\015\238\016\030\0031\0031\000\000\000\000\0031\000\000\0031\0166\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\016N\000\000\0031\0031\0031\000\000\0031\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\0031\0031\0031\016\006\0031\0031\000\000\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\0031\0031\016~\016\150\003\017\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\014\150\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\015\142\015\166\003\017\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\014\174\015.\015\214\015\238\003\017\003\017\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\003\017\003\017\003\017\016\006\003\017\003\017\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003}\003}\000\000\000\000\000\000\003}\000\000\000\000\003}\000\000\000\000\003}\000\000\003}\000\000\000\000\003}\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\000\000\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\000\000\000\000\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\003}\003}\003}\003}\000\000\000\000\003}\000\000\003}\003}\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\rR\003}\003}\003}\003}\003}\000\000\000\000\003}\003}\014r\000\000\000\000\000\000\000\000\003}\003}\003}\003}\n\217\n\217\000\000\000\000\000\000\n\217\000\000\000\000\n\217\000\000\000\000\n\217\000\000\n\217\000\000\000\000\n\217\000\000\n\217\n\217\n\217\000\000\n\217\n\217\n\217\000\000\000\000\000\000\000\000\000\000\n\217\n\217\n\217\n\217\n\217\000\000\n\217\000\000\000\000\000\000\000\000\000\000\n\217\n\217\n\217\n\217\n\217\000\000\000\000\n\217\000\000\000\000\000\000\000\000\n\217\000\000\n\217\n\217\000\000\000\000\000\000\000\000\n\217\n\217\n\217\000\000\000\000\000\000\000\000\000\000\000\000\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\000\000\000\000\n\217\000\000\n\217\n\217\000\000\000\000\000\000\000\000\000\000\000\000\n\217\n\217\n\217\000\000\n\217\n\217\n\217\000\000\n\217\000\000\000\000\000\000\n\217\000\000\n\217\n\217\000\000\rR\n\217\n\217\n\217\n\217\n\217\000\000\000\000\n\217\n\217\014r\000\000\000\000\000\000\000\000\n\217\n\217\n\217\n\217\002\173\002\173\000\000\000\000\000\000\002\173\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\000\000\000\000\002\173\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\rR\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\002\173\014r\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\177\002\177\000\000\000\000\000\000\002\177\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\000\000\000\000\014\150\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\002\177\000\000\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\015\142\015\166\002\177\000\000\000\000\002\177\000\000\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\014\174\015.\015\214\015\238\002\177\002\177\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\016\006\002\177\002\177\000\000\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\229\002\229\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\000\000\000\000\002\229\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\rR\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\002\229\014r\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\233\002\233\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\000\000\000\000\014\150\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\015\022\002\233\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\014\174\015.\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\002\233\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\003e\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\003e\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\003e\003e\003e\003e\000\000\000\000\003e\000\000\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\rR\003e\003e\003e\003e\003e\000\000\000\000\003e\003e\014r\000\000\000\000\000\000\000\000\003e\003e\003e\003e\0039\0039\000\000\000\000\000\000\0039\000\000\000\000\0039\000\000\000\000\0039\000\000\0039\000\000\000\000\014\150\000\000\0039\0039\0039\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\0039\000\000\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\015\142\015\166\0039\000\000\000\000\0039\000\000\000\000\000\000\000\000\0039\000\000\015\190\0039\000\000\000\000\000\000\000\000\0039\0039\000\242\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\014\174\015.\015\214\015\238\016\030\0039\0039\000\000\000\000\0039\000\000\0039\0166\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\016N\000\000\0039\0039\0039\000\000\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\0039\0039\0039\016\006\0039\0039\000\000\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\0039\0039\016~\016\150\003\161\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\014\150\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\015\142\015\166\003\161\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003\161\000\000\015\190\003\161\000\000\000\000\000\000\000\000\003\161\003\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\014\174\015.\015\214\015\238\016\030\003\161\003\161\000\000\000\000\003\161\000\000\003\161\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\016N\000\000\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\016\174\003\161\016\230\016\006\003\161\003\161\000\000\000\000\003\161\016f\003\161\000\000\000\000\000\000\000\000\003\161\003\161\016~\016\150\003\145\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\014\150\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\015\142\015\166\003\145\000\000\000\000\003\145\000\000\000\000\000\000\000\000\003\145\000\000\015\190\003\145\000\000\000\000\000\000\000\000\003\145\003\145\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\014\174\015.\015\214\015\238\016\030\003\145\003\145\000\000\000\000\003\145\000\000\003\145\0166\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\016N\000\000\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\016\174\003\145\016\230\016\006\003\145\003\145\000\000\000\000\003\145\016f\003\145\000\000\000\000\000\000\000\000\003\145\003\145\016~\016\150\003\029\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\003\029\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\000\000\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\rR\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\003\029\014r\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\n\193\n\193\000\000\000\000\000\000\n\193\000\000\000\000\n\193\000\000\000\000\n\193\000\000\n\193\000\000\000\000\014\150\000\000\n\193\n\193\n\193\000\000\n\193\n\193\n\193\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\n\193\000\000\000\000\000\000\000\000\000\000\n\193\n\193\015\142\015\166\n\193\000\000\000\000\n\193\000\000\000\000\000\000\000\000\n\193\000\000\015\190\n\193\000\000\000\000\000\000\000\000\n\193\n\193\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\193\n\193\014\174\015.\015\214\015\238\016\030\n\193\n\193\000\000\000\000\n\193\000\000\n\193\0166\000\000\000\000\000\000\000\000\000\000\000\000\n\193\n\193\016N\000\000\n\193\n\193\n\193\000\000\n\193\000\000\000\000\000\000\n\193\000\000\n\193\n\193\000\000\n\193\n\193\n\193\016\006\n\193\n\193\000\000\000\000\n\193\016f\n\193\000\000\000\000\000\000\000\000\n\193\n\193\016~\016\150\002}\002}\000\000\000\000\000\000\002}\000\000\000\000\002}\000\000\000\000\002}\000\000\002}\000\000\000\000\002}\000\000\002}\002}\002}\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\000\000\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\000\000\000\000\002}\000\000\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\002}\002}\002}\002}\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\000\000\002}\002}\020f\000\000\002}\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\rR\002}\002}\002}\002}\002}\000\000\000\000\002}\002}\014r\000\000\000\000\000\000\000\000\002}\002}\002}\002}\n\137\n\137\000\000\000\000\000\000\n\137\000\000\000\000\n\137\000\000\000\000\n\137\000\000\n\137\000\000\000\000\n\137\000\000\n\137\n\137\n\137\000\000\n\137\n\137\n\137\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\000\000\n\137\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\000\000\000\000\000\000\000\000\n\137\000\000\n\137\n\137\000\000\000\000\000\000\000\000\n\137\n\137\n\137\000\000\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\000\000\n\137\n\137\000\000\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\000\000\n\137\n\137\n\137\000\000\n\137\000\000\000\000\000\000\n\137\000\000\n\137\n\137\000\000\rR\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\n\137\014r\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\153\n\153\000\000\000\000\000\000\n\153\000\000\000\000\n\153\000\000\000\000\n\153\000\000\n\153\000\000\000\000\014\150\000\000\n\153\n\153\n\153\000\000\n\153\n\153\n\153\000\000\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\n\153\000\000\000\000\000\000\000\000\000\000\n\153\n\153\015\142\015\166\n\153\000\000\000\000\n\153\000\000\000\000\000\000\000\000\n\153\000\000\015\190\n\153\000\000\000\000\000\000\000\000\n\153\n\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\014\174\015.\015\214\015\238\016\030\n\153\n\153\000\000\000\000\n\153\000\000\n\153\0166\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\016N\000\000\n\153\n\153\n\153\000\000\n\153\000\000\000\000\000\000\n\153\000\000\n\153\n\153\000\000\n\153\n\153\n\153\016\006\n\153\n\153\000\000\000\000\n\153\016f\n\153\000\000\000\000\000\000\000\000\n\153\n\153\016~\016\150\011\229\011\229\000\000\000\000\000\000\011\229\000\000\000\000\011\229\000\000\000\000\011\229\000\000\011\229\000\000\000\000\011\229\000\000\011\229\011\229\011\229\000\000\011\229\011\229\011\229\000\000\000\000\000\000\000\000\000\000\011\229\011\229\011\229\011\229\011\229\000\000\011\229\000\000\000\000\000\000\000\000\000\000\011\229\011\229\011\229\011\229\011\229\000\000\000\000\011\229\000\000\000\000\000\000\000\000\011\229\000\000\011\229\011\229\000\000\000\000\000\000\000\000\011\229\011\229\011\229\000\000\000\000\000\000\000\000\000\000\000\000\011\229\011\229\011\229\011\229\011\229\011\229\011\229\011\229\011\229\000\000\000\000\011\229\000\000\011\229\011\229\000\000\000\000\000\000\000\000\000\000\000\000\011\229\011\229\011\229\000\000\011\229\011\229\011\229\000\000\011\229\000\000\000\000\000\000\011\229\000\000\011\229\011\229\000\000\rR\011\229\011\229\011\229\011\229\011\229\000\000\000\000\011\229\011\229\014r\000\000\000\000\000\000\000\000\011\229\011\229\011\229\011\229\003-\003-\000\000\000\000\000\000\003-\000\000\000\000\003-\000\000\000\000\003-\000\000\003-\000\000\000\000\003-\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\000\000\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\000\000\000\000\003-\000\000\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\000\000\000\000\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\003-\003-\003-\003-\000\000\000\000\003-\000\000\003-\003-\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\rR\003-\003-\003-\003-\003-\000\000\000\000\003-\003-\014r\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003%\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\003%\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\000\000\003%\000\000\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\003%\003%\003%\003%\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\rR\003%\003%\003%\003%\003%\000\000\000\000\003%\003%\014r\000\000\000\000\000\000\000\000\003%\003%\003%\003%\002\249\002\249\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\014\174\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\225\002\225\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\014\150\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\015\022\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\014\174\015.\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\003\189\003\189\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\000\000\000\000\003\189\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\000\000\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\000\000\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\000\000\000\000\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\000\000\003\189\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\rR\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\003\189\014r\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\002\185\002\185\000\000\000\000\000\000\002\185\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\000\000\000\000\014\150\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\000\000\006\222\005\246\000\000\002\185\002\185\002\185\015\022\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\006\226\000\000\002\185\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\006\146\002\185\002\185\014\174\015.\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\002\185\002\185\t\245\000\000\000\000\000\000\t\245\000\242\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\002\185\002\185\000\000\017\134\000\000\000\000\002\185\002\185\002\185\002\185\001\n\011U\000\006\t\245\000\000\000\000\002\234\002\222\017\142\003\022\002\150\nJ\003\"\000\000\000\000\003b\001\014\000\000\017\194\000\000\002\170\000\000\017\206\000\000\t\245\001\214\000\000\000\000\000\000\t\234\001\022\011\206\011\210\001\"\001&\000\000\000\000\000\000\003r\000\000\t\182\000\000\031\138\011U\012B\012F\000\000\t\210\t\214\000\000\t\218\t\230\t\242\012J\011F\000\000\001>\000\000\003Z\000\000\000\000\t\238\004\150\000\000\011U\011z\011~\011\138\011\158\012^\007&\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\012v\001V\000\000\000\000\000\000\001Z\000\000\012\130\012\154\r\154\0072\0076\000\000\000\000\001^\000\000\000\000\000\000\011U\000\000\000\000\001b\004\150\000\000\000\000\011U\000\000\000\000\000\000\000\000\000\000\001\158\bN\000\000\bZ\007:\011\146\000\000\001\162\000\000\021\026\003\238\r\174\000\000\001\170\000\000\001\174\001\178\000\145\n9\000\000\000\000\000\000\000\145\b^\002\222\000\145\000\000\002\150\000\000\r\234\000\000\000\000\003b\000\000\000\000\000\145\000\000\000\145\000\000\000\145\000\000\000\145\001\214\000\000\014\002\000\000\003n\000\000\000\000\005\150\000\000\000\000\014\n\000\145\000\000\003r\000\000\t\182\000\000\000\145\000\000\000\000\005\162\000\145\t\210\t\214\000\000\000\242\t\230\001\194\000\000\000\145\000\000\000\000\000\145\003Z\000\000\000\000\t\238\000\145\000\145\000\145\011z\011~\011\138\000\000\014\018\007&\000\145\000\145\000\000\000\000\000\000\000\000\000\000\000\145\000\145\017&\000\000\000\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\000\145\000\145\000\000\bb\000\145\000\145\b\"\b\150\000\000\000\000\000\000\000\000\000\000\b\170\000\000\000\145\000\000\b\182\000\000\000\000\000\000\000\145\000\145\007:\011\146\000\000\000\000\000\000\011\170\003\238\005\249\000\145\000\006\000\145\000\000\000\250\002\234\002\222\002\238\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\003f\000\000\000\000\000\000\005\249\000\000\003j\001\214\000\000\023\022\001\210\003n\000\000\t\174\t\178\000\000\000\000\000\000\011V\000\000\003r\000\000\t\182\000\000\022\134\000\000\t\202\t\206\001\214\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\023\014\003Z\025\138\000\000\t\238\023&\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\003\182\000\000\026\002\000\000\000\000\023.\003Z\012v\000\000\000\000\000\000\000\000\0155\026\026\012\130\012\154\r\154\0072\0076\023B\023\138\000\000\000\000\005\249\005\249\003N\003R\000\000\000\000\000\000\004\018\0155\0155\002\022\011m\0155\002\030\000\000\000\000\003V\024f\028r\007:\011\146\001\214\000\000\000\000\011\170\003\238\r\174\025\014\000\000\000\006\000\000\000\000\000\250\002\234\002\222\002\238\003\022\002\150\002\206\003\"\000\000\000\000\003b\000\000\000\000$:\000\000\003J\001\226\000\000\000\000\003j\001\214\000\242\003Z\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\011V\000\000\003r\000\000\t\182\000\000\022\134\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\005\210\0155\023\014\003Z\000\000\000\000\t\238\023&\000\000\000\000\011z\011~\011\138\011\158\012^\007&\011m\rn\000\000\000\000\000\000\000\000\000\000\023.\000\000\012v\011\161#\234\000\000\000\000\000\000\000\000\012\130\012\154\r\154\0072\0076\023B\023\138\000\000\000\249\006!\021\178\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\000\012\022\005\246\000\000\000\000\000\000\000\000\000\000\028r\007:\011\146\000\000\000\169\000\249\011\170\003\238\r\174\000\169\000\000\002\222\000\169\012\026\002\150\000\000\r\234\000\000\000\000\003b\000\000\000\000\000\169\000\000\000\169\000\000\000\169\000\249\000\169\001\214\000\000\014\002\025\146\003n\000\000\000\000\006\146\000\000\000\249\014\n\000\169\000\000\003r\000\249\t\182\000\000\000\169\000\000\000\000\000\000\000\169\t\210\t\214\000\249\000\000\t\230\001\194\000\242\000\169\000\000\000\000\000\169\003Z\000\000\000\000\t\238\000\169\000\169\000\169\011z\011~\011\138\000\000\014\018\007&\000\169\000\169\000\000\000\249\000\000\000\000\000\000\000\169\000\169\000\000\000\000\000\169\005\005\000\249\000\000\000\000\000\000\000\000\000\000\0072\0076\000\169\000\169\000\000\000\000\000\169\000\169\005\005\000\000\000\000\nJ\000\000\000\000\000\000\000\000\000\000\000\169\005\005\000\000\000\000\000\000\005\005\000\169\000\169\007:\011\146\000\000\000\000\000\000\011\170\003\238\0159\000\169\000\006\000\169\000\000\000\250\002\234\002\222\002\238\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\006\025\0159\0159\000\000\011q\0159\003j\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\011V\000\000\003r\000\000\t\182\000\000\022\134\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\023\014\003Z\000\000\000\000\t\238\023&\000\000\000\242\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023.\000\000\012v\000\000#\234\000\000\000\000\000\000\000\000\012\130\012\154\r\154\0072\0076\023B\023\138\0159\000\000$\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011q\000\000\000\000\000\000\000\000\028r\007:\011\146\001\n\000\000\000\000\011\170\003\238\r\174\003\130\002\222\b6\000\000\002\150\000\000\003\134\000\000\000\000\003b\001\014\000\000\000\000\000\000\002\170\000\000\000\000\000\000\000\000\001\214\000\000\011\173\000\000\001\018\001\022\001\026\005\178\001\"\001&\000\000\000\000\000\000\000\241\000\000\000\000\000\000\005\182\000\241\0012\006\230\0142\011\173\000\000\011\173\011\173\005\174\001\194\001:\000\000\000\000\001>\000\000\003Z\000\000\000\000\006\234\000\241\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\007*\000\000\000\241\001Z\000\000\000\000\000\000\003~\0072\0076\000\000\007\182\001^\000\241\000\000\000\000\000\000\007\194\000\241\001b\000\000\000\000\000\000\bZ\000\000\000\000\000\000\000\241\000\241\001\158\bN\000\000\000\000\007:\000\000\000\000\001\162\000\000\001\166\003\238\001\n\000\000\001\170\b^\001\174\001\178\003\130\002\222\012\214\000\000\002\150\000\000\003\134\000\241\rR\003b\001\014\000\000\000\000\000\000\002\170\000\000\011\173\000\241\014r\001\214\000\000\000\000\000\000\001\018\001\022\001\026\005\178\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\182\000\000\0012\006\230\000\000\000\242\000\000\000\000\000\000\005\174\001\194\001:\000\000\000\000\001>\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\007*\000\000\000\000\001Z\000\000\000\000\000\000\000\000\0072\0076\bb\007\182\001^\b\"\012\230\000\000\000\000\007\194\022.\001b\b\170\000\000\000\000\000\000\b\182\002\018\000\000\000\000\000\000\001\158\bN\000\000\002\022\007:\000\000\002\030\001\162\000\000\001\166\003\238\000\000\000\000\001\170\001\214\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\002\206\000\000\000>\000\000\000\000\000\000\000B\000\000\000\000\003J\001\226\000\000\000\000\000F\000\000\000\000\003Z\000\000\000\000\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000\000\000\000\000\000\000n\000\000\000r\000\000\000v\000\000\003\130\002\222\000\000\005\210\002\150\000\000\n\214\000\000\000\000\003b\000\000\000\000\000z\000\000\000\000\000~\000\130\000\000\000\000\001\214\000\000\000\000\000\134\000\138\000\142\000\000\005\150\000\000\000\000\bZ\000\146\000\150\000\154\000\158\000\000\000\162\000\166\000\170\000\000\005\162\000\000\000\174\000\178\000\182\000\186\005\174\001\194\000\000\000\190\b^\000\194\000\198\003Z\000\000\000\000\006\234\000\000\000\000\000\202\006\238\000\206\006\246\007\026\n\242\007&\005U\000\210\000\214\000\000\000\218\005U\003\130\002\222\005U\006\017\002\150\007*\011\006\000\000\t\146\003b\000\000\000\000\005U\0072\0076\000\000\005U\000\000\005U\001\214\000\000\0116\000\242\000\000\000\000\n\250\005\150\003j\000\000\012\166\005U\000\000\000\000\000\000\000\000\000\000\005U\000\000\007:\005\162\000\000\000\000\000\000\000\000\003\238\012\210\001\194\000\000\005U\028\158\000\000\005U\003Z\000\000\000\000\006\234\005U\005U\r\161\006\238\023\014\006\246\000\000\012\250\007&\023&\000\000\bb\000\000\000\000\b\"\r\006\005U\005U\029B\029R\007*\b\170\000\000\000\000\000\000\b\182\000\000\000\000\0072\0076\005U\005U\017\n\000\000\005U\005U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\017\000\000\000\000\r\161\003.\000\000\r\161\017\018\005U\007:\030F\000\000\000\000\r\161\011\177\003\238\000\006\r\161\000\000\005U\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\011\177\000\000\011\177\011\177\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\016\t\016\t\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\016\t\016\t\016\t\006&\000\000\000\000\012v\000\000\000\000\000\000\016\t\000\000\000\000\014\"\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\t\016\t\000\000\000\000\000\000\016\t\000\000\016\t\016\t\016\t\000\000\000\000\000\000\000\000\016\t\007:\011\146\011\177\000\000\000\000\011\170\003\238\r\174\011\169\000\000\000\006\000\000\000\000\000\000\002\234\002\222\016\t\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\011\169\000\000\011\169\011\169\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\0032\t\218\t\230\t\242\t\250\011F\001\206\001\210\000\000\003Z\000\000\000\000\t\238\000\000\b\221\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\001\214\002\154\001\234\000\000\000\000\000\000\012v\000\000\b\221\011\153\001\246\000\000\b\221\014\"\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\174\000\000\000\000\000\000\0036\000\000\003Z\003\150\003\162\000\000\022V\000\000\000\000\003\174\007:\011\146\011\169\002\018\000\000\011\170\003\238\r\174\001\153\000\000\002\022\001\153\000\242\002\030\001\153\001\153\003\178\000\000\001\153\000\000\001\153\001\214\000\000\001\153\000\000\000\000\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\001\153\000\000\000\000\002\206\000\000\001\153\000\000\b\221\001\153\000\000\000\000\000\000\003J\001\226\000\000\000\000\001\153\000\000\001\153\003Z\000\000\000\000\011\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\000\000\001\153\001\153\000\000\001\153\001\153\001\153\001\153\000\000\000\000\000\000\005\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\007j\000\000\000\000\015m\015Y\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\001\153\000\000\001\153\000\006\001\153\000\000\001\153\002\234\002\222\015m\003\022\002\150\0022\003\"\000\000\0026\003b\000\000\000\000\000\000\000\000\000\000\002>\006\242\000\000\000\000\001\214\000\000\002B\000\000\003n\000\000\t\174\t\178\002J\015Y\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\rf\t\218\t\230\t\242\t\250\011F\001\206\001\210\002N\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\001\214\002\154\001\234\000\000\000\000\000\000\012v\000\000\000\000\000\000\001\246\000\000\000\000\014\"\012\154\r\154\0072\0076\000\000\000\000\006\t\000\000\000\000\000\000\000\000\025\162\001\250\002\174\002R\000\000\000\000\0036\000\000\003Z\003\150\003\162\000\000\000\000\000\000\000\000\003\174\007:\011\146\031v\003j\000\006\011\170\003\238\r\174\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\003\178\003b\000\000\000\000\000\000\000\000\000\000\000\000\021B\025\206\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\023\014\000\000\000\000\000\000\003r\023&\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\025\250\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\006\t\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\026^\015m\015Y\014\"\012\154\r\154\0072\0076\002\n\000\000\bu\000\000\000=\000\000\000\000\002\022\000=\000=\002\030\000=\000=\015m\000=\000\000\0022\000=\001\214\0026\000\000\000\000\bu\007:\011\146\021.\002\250\000=\011\170\003\238\r\174\000=\002B\000=\000=\002\206\000\000\000\000\002J\015Y\000=\000\000\000=\000\000\003J\001\226\000=\000=\000\000\000=\000=\003Z\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\000\000\002N\000=\000\000\000\000\000\000\000=\000=\000=\000=\000=\000=\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\000=\000\000\000\000\000\000\000\000\031\162\000\000\000=\000=\000=\000=\000=\002\018\000\000\by\000\000\000A\000\000\000\000\002\022\000A\000A\002\030\000A\000A\002R\000A\000\000\000\000\000A\001\214\000\000\000\000\000\000\by\000=\000=\000\000\000\000\000A\000=\000=\000=\000A\000\000\000A\000A\002\206\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\003J\001\226\000A\000A\000\000\000A\000A\003Z\000A\000A\000A\000A\000A\000\000\000\000\000\000\000A\000\000\000\000\000A\000\000\000\000\000\000\000A\000A\000A\000A\000A\000A\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\000A\000\000\000\000\000\000\000\000\022\198\000\000\000A\000A\000A\000A\000A\002\018\000\000\b\133\000\000\014\245\000\000\000\000\002\022\014\245\014\245\002\030\014\245\014\245\000\000\014\245\000\000\000\000\014\245\001\214\000\000\000\000\000\000\b\133\000A\000A\000\000\000\000\014\245\000A\000A\000A\014\245\000\000\014\245\014\245\002\206\000\000\000\000\000\000\000\000\014\245\000\000\014\245\000\000\003J\001\226\014\245\014\245\000\000\014\245\014\245\003Z\014\245\014\245\014\245\014\245\014\245\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\014\245\014\245\014\245\014\245\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\014\245\000\000\000\000\000\000\000\000\0126\000\000\014\245\014\245\014\245\014\245\014\245\002\018\000\000\b\129\000\000\014\241\000\000\000\000\002\022\014\241\014\241\002\030\014\241\014\241\000\000\014\241\000\000\000\000\014\241\001\214\000\000\000\000\000\000\b\129\014\245\014\245\000\000\000\000\014\241\014\245\014\245\014\245\014\241\000\000\014\241\014\241\002\206\000\000\000\000\000\000\000\000\014\241\000\000\014\241\000\000\003J\001\226\014\241\014\241\000\000\014\241\014\241\003Z\014\241\014\241\014\241\014\241\014\241\000\000\000\000\000\000\014\241\001\206\001\210\014\241\000\000\000\000\000\000\014\241\014\241\014\241\014\241\014\241\014\241\000\000\000\000\023\150\000\000\000\000\002\150\005\210\001\214\002\154\014\241\000\000\000\000\000\000\000\000\000\000\000\000\014\241\014\241\014\241\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\006\003\182\000\000\011\165\005\246\0036\000\000\003Z\003\150\003\162\005\205\014\241\014\241\023\154\003\174\000\000\014\241\014\241\014\241\014\150\000\000\000\000\017\250\011\165\000\000\011\165\011\165\023\166\005\205\028\030\000\000\003\178\000\000\014\254\015F\015^\015\022\015v\000\000\000\000\000\000\005\205\000\000\b\249\000\000\000\000\006\146\015\142\015\166\000\000\000\000\000\000\000\000\0076\005\205\005\205\000\000\005\205\000\000\015\190\000\000\005\205\b\249\005\142\028*\000\000\b\249\000\242\005\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\174\015.\015\214\015\238\016\030\027\222\006\197\006\197\000\000\000\000\000\000\006\197\0166\006\197\006\197\005\205\000\000\000\000\000\000\000\000\000\000\016N\006\197#\179\006\197\006\197\006\197\000\000\006\197\006\197\006\197\000\242\000\000\000\000\000\000\000\000\016\174\000\000\016\230\016\006\000\000\000\000\006\197\000\000\011\165\016f\000\000\029V\006\197\006\197\000\000\000\000\006\197\016~\016\150\000\000\000\000\000\000\006\197\000\000\006\197\000\000\000\000\006\197\000\000\000\000\000\000\000\000\006\197\006\197\006\197\000\000\000\000\000\000\000\000\000\000\bb\006\197\006\197\b\"\000\000\000\000\000\000\000\000\006\197\006\197\b\170\000\000\006\197\000\000\b\182\006\197\000\000\000\000\000\000\000\000\000\000\000\000\006\197\006\197\006\197\000\000\006\197\006\197\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\000\000\006\197\005\221\006\197\006\197\000\000\000\000\004b\006\197\000\000\000\000\000\000\005\221\006\197\000\000\000\000\005\221\006\197\005\221\006\197\006\197\006\197\006\197\000\000\000\000\000\000\006\197\000\000\006\197\006\197\005\221\000\000\000\000\000\000\000\000\000\000\005\221\006\197\000\000\006\197\006\197\006\197\000\000\006\197\006\197\006\197\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\006\197\000\000\000\000\000\000\000\000\000\000\006\197\006\197\000\000\000\000\006\197\000\000\000\000\000\000\000\000\005\221\006\197\000\000\006\197\000\000\000\000\006\197\000\000\000\000\000\000\000\000\006\197\006\197\006\197\005\221\005\221\000\000\000\000\005\221\005\221\006\197\006\197\000\000\000\000\000\000\000\000\000\000\006\197\006\197\000\000\000\000\006\197\000\000\000\000\006\197\000\000\005\221\000\000\000\000\000\000\000\000\006\197\006\197\006\197\000\000\006\197\006\197\027\174\000\000\005\173\000\000\000\000\000\000\000\000\005\173\000\000\006\197\005\173\006\197\006\197\000\000\000\000\004\130\006\197\000\000\000\000\000\000\005\173\006\197\000\000\000\000\005\173\006\197\005\173\006\197\006\197\006\197\006\197\000\000\000\000\000\000\006\197\000\000\006\197\006\197\005\173\000\000\000\000\000\000\000\000\000\000\005\173\006\197\000\000\006\197\006\197\006\197\000\000\006\197\006\197\006\197\000\000\000\000\000\000\000\000\000\000\005\173\000\000\000\000\000\000\000\000\005\173\006\197\000\000\000\000\000\000\000\000\000\000\006\197\006\197\000\000\000\000\006\197\000\000\000\000\000\000\000\000\005\173\006\197\000\000\006\197\000\000\000\000\006\197\000\000\000\000\000\000\000\000\006\197\006\197\006\197\005\173\005\173\000\000\000\000\005\173\005\173\006\197\006\197\000\000\000\000\000\000\000\000\000\000\006\197\006\197\000\000\000\000\006\197\000\000\000\000\006\197\000\000\005\173\000\000\000\000\000\000\000\000\006\197\006\197\006\197\000\000\006\197\006\197\027.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\197\000\000\006\197\006\197\000\000\000\000\002\178\006\197\000\000\000\000\000\000\000\000\006\197\000\000\004\177\000\000\006\197\004\177\006\197\006\197\005\205\005\205\000\000\000\000\005\205\000\000\005\205\000\000\000\000\005\205\000\000\000\000\000\000\004\177\004\177\005\205\004\177\004\177\000\000\005\205\000\000\000\000\000\000\000\000\000\000\000\000\005\205\029f\001\206\001\210\029~\000\000\000\000\000\000\000\000\000\000\000\000\004\177\000\000\005\205\000\000\000\000\000\000\000\000\000\000\005\205\005\205\001\214\002\154\000\000\000\000\000\000\005\205\000\000\000\000\005\205\000\000\000\000\000\242\005\205\000\000\005\205\005\205\005\205\005\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\004^\000\000\005\205\000\000\0036\000\000\003Z\003\150\003\162\000\000\005\205\005\205\000\000\003\174\004\177\000\006\004\177\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\004\177\003\178\000\000\b\"\004\177\000\000\005\205\000\000\004\177\001\214\004\177\000\000\005\205\003n\004\177\t\174\t\178\000\000\000\000\000\000\001\169\005\246\003r\000\000\t\182\001\169\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\"\174\000\000\003Z\000\000\001\169\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\146\012v\000\000\001\169\000\000\000\000\000\000\000\000\015\218\012\154\r\154\0072\0076\000\000\001\169\000\000\000\000\000\000\000\000\001\169\001\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\001\169\001\169\000\000\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000y\000\000\011\170\003\238\r\174\000y\000\000\000y\000y\000\000\000\000\000\000\t\201\000\000\000\000\001\169\000y\000\000\000y\000y\000y\000\000\000y\000y\000y\001\169\011A\bb\000\000\000\000\b\"\000\000\000\000\000\000\000\000\000\000\000y\t\201\000\000\000\000\000\000\t\201\000y\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000\000\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\000\000\011\201\005\246\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\000\000\000\000\000y\000\000\b\254\006\202\000\000\011\201\000\000\000y\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\011A\000\000\000\000\000\000\000y\000\006\000y\000y\006\146\002\234\002\222\000y\003\022\002\150\000\000 \238\000y\000\000\003b\000\000\000y\000\000\000y\000\000\000\000\000\000\000\000\000\000\001\214\000\242\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\017:\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158!\006\007&\bb\000\000\000\000\b\"\000\000\000\000\000\000\000\000\011\201\012v\b\170\000\000\000\000\000\000\b\182\000\000!\014\012\154\r\154\0072\0076\002\198\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\234\002\222\002\030\003\022\002\150\000\000\003\"\000\000\000\000\003b\001\214\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\002\206\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\003J\001\226\t\202\t\206\000\000\t\210\t\214\003Z\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\012v\000\000\000\000\000\000\000\000\022J\000\000\015\002\012\154\r\154\0072\0076\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\234\002\222\002\030\003\022\002\150\000\000\003\"\000\000\000\000\003b\001\214\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\002\206\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\003J\001\226\t\202\t\206\000\000\t\210\t\214\003Z\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\012v\000\000\000\000\000\000\000\000\022\"\000\000\016\234\012\154\r\154\0072\0076\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\234\002\222\002\030\003\022\002\150\000\000\003\"\000\000\000\000\003b\001\214\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\002\206\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\003J\001\226\t\202\t\206\000\000\t\210\t\214\003Z\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\005\210\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018\018\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\250\007:\011\146\002\238\011\133\011\133\011\170\003\238\r\174\011\133\000\000\001\210\011\133$:\000\000\000\000\000\000\000\000\000\000\003j\011\133\000\000\011\133\011\133\011\133\000\000\011\133\011\133\011\133\000\000\000\000\011V\000\000\000\000\000\000\000\000\000\000\022\134\000\000\000\000\011\133\000\000\000\000\000\000\000\000\000\000\011\133\011\133\000\000\030\198\011\133\000\000\023\014\000\000\000\000\000\000\003\182\023&\011\133\000\000\000\000\011\133\000\000\000\000\000\000\000\000\011\133\011\133\011\133\000\000\000\000\000\000\000\000\023.\000\000\011\133\011\133#\234\000\000\000\000\000\000\000\000\011\133\011\133\000\000\000\000\004j\023B\023\138\011\133\000\000\006!\000\000\000\000\000\000\000\000\011\133\011\133\011\133\000\000\011\133\011\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028r\000\000\011\133\000\006\011\133\011\133\000\000\002\234\002\222\011\133\003\022\002\150\000\000\003\"\011\133\000\000\003b\000\000\011\133\000\000\011\133\011\133\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015\242\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\014B\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\014Z\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\014b\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015\194\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\021\206\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015b\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\020\190\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\020\214\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\020\222\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015z\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\031b\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015\146\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\0196\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\020V\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000 \178\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158 \202\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000 \210\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016\n\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\0152\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018\142\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015J\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\r\210\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018:\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\019\014\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015\170\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018b\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016j\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\016\178\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\016\202\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016\210\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016\154\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\014\178\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\020j\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\019z\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\250\000\000\000\000\002\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\025\000\000\000\000\000\000\007:\011\146\003j\011\141\011\141\011\170\003\238\r\174\011\141\000\000\001\210\011\141\000\000\000\000\011V\000\000\000\000\000\000\000\000\011\141\022\134\011\141\011\141\011\141\000\000\011\141\011\141\011\141\000\000\000\000\000\000\000\000\030\198\000\000\000\000\023\014\000\000\000\000\000\000\011\141\023&\000\000\000\000\000\000\000\000\011\141\011\141\000\000\000\000\011\141\000\000\000\000\000\000\000\000\000\000\003\182\023.\011\141\000\000\000\000\011\141\000\000\000\000\000\000\000\000\011\141\011\141\011\141\000\000\000\000\023B\023\138\000\000\000\000\011\141\011\141\000\000\000\000\000\000\000\000\000\000\011\141\011\141\000\000\000\000\004j\000\000\000\000\011\141\000\000\000\000\000\000\028r\000\000\000\000\011\141\011\141\011\141\000\000\011\141\011\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\141\000\006\011\141\011\141\000\000\002\234\002\222\011\141\003\022\002\150\000\000\003\"\011\141\000\000\003b\000\000\011\141\000\000\011\141\011\141\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016:\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\022\n\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\001\206\001\210\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\001\214\002\154\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016\"\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\004~\000\000\000\000\000\000\0036\000\000\003Z\003\150\003\162\000\000\000\000\000\000\000\000\003\174\007:\011\146\000\000\015-\015-\011\170\003\238\r\174\015-\000\000\001\210\015-\000\000\000\000\000\000\000\000\003\178\000\000\000\000\004Z\000\000\015-\015-\015-\000\000\015-\015-\015-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015-\000\000\000\000\000\000\000\000\000\000\015-\015-\000\000\000\000\015-\000\000\000\000\000\000\000\000\000\000\003\182\000\000\015-\000\000\000\000\015-\000\000\000\000\000\000\000\000\015-\015-\015-\000\000\000\000\000\000\000\000\000\000\000\000\015-\015-\000\000\000\000\000\000\000\000\000\000\015-\015-\000\000\000\000\004j\000\000\000\000\015-\000\000\000\000\000\000\000\000\000\000\000\000\015-\015-\015-\000\000\015-\015-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015-\000\006\015-\015-\000\000\002\234\002\222\015-\003\022\002\150\000\000\rV\015-\000\000\003b\000\000\015-\000\000\015-\015-\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\r\130\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\020\022\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016\130\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018\182\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\015\026\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\011\145\011\145\011\170\003\238\r\174\011\145\000\000\001\210\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\000\011\145\011\145\011\145\000\000\011\145\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\003\182\000\000\011\145\000\000\000\000\011\145\000\000\000\000\000\000\000\000\011\145\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\004j\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\000\000\011\145\011\145\011\145\000\000\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\006\011\145\011\145\000\000\002\234\002\222\011\145\003\022\002\150\000\000\003\"\011\145\000\000\003b\000\000\011\145\000\000\011\145\011\145\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\014\214\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\rB\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\016R\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\020\134\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\001\206\001\210\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\001\214\002\154\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\019^\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003: j\000\000\000\000\000\000\0036\000\000\003Z\003\150\003\162\000\000\000\000\000\000\000\000\003\174\007:\011\146\000\000\000\000\000\000\011\170\003\238\r\174\r\189\000\000\000\000\r\189\000\000\000\000\r\189\r\189\003\178\000\000\r\189\006\149\r\189\000\000\000\000\r\189\000\000\000\000\000\000\r\189\r\189\000\000\r\189\r\189\000\000\r\189\000\000\r\189 \130\000\000\000\000\000\000\r\189\000\000\0069\r\189\000\000\000\000\000\000\000\000\t\022\002\222\000\000\r\189\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\r\189\000\000\000\000\000\000\000\000\0069\r\189\001\214\000\000\r\189\000\000\000\000\r\189\r\189\000\000\r\189\000\000\r\189\r\189\000\000\028\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\189\000\000\000\000\029^\006\002\000\000\029b\000\000\r\189\r\189\003Z\000\000\r\189\000\000\r\189\000\000\000\000\029\146\000\000\000\000\007V\000\000\000\000\000\000\000\000\000\000\000\000\r\189\r\189\000\000\r\189\r\189\000\000\r\189\000\000\r\189\000\000\r\189\000\006\r\189\029\162\r\189\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\018\222\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\234\002\222\000\000\003\022\002\150\000\000\003\"\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\007:\011\146\000\000\000\000\001\214\011\170\003\238\r\174\003n\000\000\t\174\t\178\000\000\000\000\000\000\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\t\202\t\206\000\000\t\210\t\214\000\000\t\218\t\230\t\242\t\250\011F\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\011\158\012^\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012v\000\000\000\000\000\000\000\000\000\000\000\000\014\154\012\154\r\154\0072\0076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\189\000\000\000\000\000\000\000\000\005\189\007:\011\146\005\189\011\137\011\137\011\170\003\238\r\174\011\137\000\000\001\210\011\137\005\189\000\000\000\000\000\000\005\189\000\000\005\189\011\137\000\000\011\137\011\137\011\137\000\000\011\137\011\137\011\137\000\000\000\000\005\189\000\000\000\000\000\000\000\000\000\000\005\189\000\000\000\000\011\137\000\000\000\000\000\000\000\000\000\000\011\137\011\137\000\000\005\189\011\137\000\000\005\189\000\000\000\000\000\000\003\182\005\189\011\137\000\000\000\000\011\137\000\000\000\000\000\000\000\000\011\137\011\137\011\137\000\000\000\000\000\000\000\000\005\189\005\189\011\137\011\137\005\189\000\000\000\000\000\000\000\000\011\137\011\137\000\000\000\000\004j\005\189\005\189\011\137\000\000\005\189\005\189\000\000\000\000\000\000\011\137\011\137\011\137\000\000\011\137\011\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\189\000\000\011\137\000\000\011\137\011\137\000\000\000\000\000\000\011\137\000\000\022\222\000\000\000\000\011\137\000\000\000\000\005\249\011\137\000\000\011\137\011\137\000\250\n)\n)\002\238\000\000\n)\000\000\n)\000\000\000\000\n)\000\000\000\000\003f\000\000\000\000\011R\005\249\000\000\003j\n)\000\000\001\206\002\146\000\000\000\000\002\150\n)\000\000\000\000\000\000\011V\000\000\000\000\000\000\000\000\000\000\022\134\000\000\000\000\n)\001\214\002\154\001\234\000\000\000\000\n)\n)\000\000\030\198\000\000\001\246\023\014\n)\000\000\000\000\n)\023&\000\000\000\000\n)\000\000\n)\n)\n)\n)\000\000\002\166\002\174\000\000\000\000\000\000\0036\023.\003Z\003\150\003\162\n)\000\000\000\000\000\000\027\194\000\000\"&\000\000\n)\n)\023B\023\138\000\000\000\000\005\249\005\249\000\000\000\000\000\000\000\000\000\000\003\178\000\000\000\000\000\000\000\000\000\000\000\000\r\201\000\000\0076\r\201\028r\n)\003\130\002\222\000\000\000\000\002\150\n)\003\134\"2\000\000\003b\000\000\000\000\000\000\r\201\r\201\rf\r\201\r\201\000\000\001\214\000\000\001\206\001\210\017\022\027\222\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\170\000\000\r\201\000\000\005\162\001\214\001\218\001\234\000\000\000\000\005\174\001\194\000\000\000\000\000\000\001\246\000\000\003Z\000\000\000\000\006\234\000\000\001\254\r\201\006\238\000\000\006\246\007\026\007z\007&\000\000\001\250\002\174\000\000\000\000\000\000\0036\000\000\003Z\003\150\003\162\007*\000\000\000\000\000\000\003\174\000\000\000\000\000\000\0072\0076\000\000\007\182\r\201\000\000\r\201\000\000\000\000\007\194\000\000\000\000\000\000\003\178\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\r\201\r\201\000\000\007:\000\000\r\201\000\000\r\201\000\000\003\238\r\197\r\201\000\000\r\197\000\000\000\000\003\130\002\222\000\000\000\000\002\150\023\158\003\134\000\000\000\000\003b\000\000\000\000\000\000\r\197\r\197\000\000\r\197\r\197\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\197\000\000\005\162\000\000\000\000\000\000\000\000\000\000\b2\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\r\197\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007*\000\000\0151\0151\000\000\000\000\000\000\0151\0072\0076\0151\007\182\r\197\000\000\r\197\000\000\000\000\007\194\004z\000\000\0151\0151\0151\000\000\0151\0151\0151\r\197\000\000\000\000\r\197\r\197\000\000\007:\000\000\r\197\000\000\r\197\0151\003\238\000\000\r\197\000\000\000\000\0151\0151\000\000\000\000\0151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0151\000\000\000\000\0151\000\000\000\000\000\000\000\000\0151\0151\0151\000\000\000\000\000\000\000\000\000\000\000\000\0151\0151\000\000\000\000\000\000\000\000\000\000\0151\0151\000\000\000\000\0151\000\000\000\000\0151\000\000\000\000\000\000\000\000\000\000\000\000\0151\0151\0151\000\000\0151\0151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0151\000\000\0151\0151\000\000\004\005\004\005\0151\000\000\000\000\004\005\000\000\0151\004\005\000\000\000\000\0151\000\000\0151\0151\000\000\004z\000\000\004\005\004\005\004\005\000\000\004\005\004\005\004\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\005\000\000\000\000\000\000\000\000\000\000\004\005\"\006\000\000\000\000\004\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\005\000\000\000\000\004\005\000\000\000\000\000\000\000\000\004\005\004\005\004\005\000\000\000\000\000\000\000\000\000\000\000\000\004\005\004\005\000\000\000\000\000\000\000\000\000\000\004\005\004\005\000\000\000\000\004\005\000\000\000\000\004\005\000\000\000\000\000\000\000\000\000\000\000\000\004\005\004\005\004\005\000\000\004\005\004\005\003\229\003\229\000\000\000\000\000\000\003\229\000\000\000\000\003\229\004\005\000\000\004\005\004\005\000\000\000\000\000\000\004\005\000\000\003\229\003\229\003\229\004\005\003\229\003\229\003\229\004\005\000\000\004\005\004\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\229\000\000\000\000\000\000\000\000\000\000\003\229\003\254\000\000\000\000\003\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\229\000\000\000\000\003\229\000\000\000\000\000\000\000\000\003\229\003\229\003\229\000\000\000\000\000\000\000\000\000\000\000\000\003\229\003\229\000\000\000\000\000\000\000\000\000\000\003\229\003\229\000\000\000\000\003\229\000\000\000\000\003\229\000\000\000\000\000\000\000\000\000\000\000\000\003\229\003\229\003\229\000\000\003\229\003\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\249\015\173\003\229\000\000\003\229\003\229\000\000\015\173\000\000\003\229\015\173\000\000\015\173\000\000\003\229\015\173\000\000\000\000\003\229\006\249\003\229\003\229\000\000\006\249\000\000\015\173\000\000\015\173\000\000\015\173\000\000\000\000\000\000\000\000\000\000\015\173\000\000\b\154\015\173\000\000\015\173\000\000\000\000\001\206\001\210\000\000\000\000\015\173\015\173\000\000\000\000\015\173\015\173\000\000\000\000\000\000\000\000\000\000\015\173\006\242\000\000\015\173\001\214\002\154\001\234\015\173\015\173\015\173\000\000\015\173\015\173\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\015\173\015\173\000\000\000\000\000\000\000\000\000\000\001\250\002\174\015\173\015\173\000\000\0036\006\249\003Z\003\150\003\162\000\000\006\245\015\173\015\173\003\174\015\173\000\000\000\000\015\173\000\000\000\000\015\173\006\249\015\173\000\000\006\249\015\173\015\173\015\173\000\000\006\245\003\178\015\173\015\173\006\245\000\000\015\173\000\000\015\173\000\000\015\173\000\000\000\000\000\000\000\000\000\000\015\173\000\000\024\198\015\173\000\000\015\173\000\000\000\000\001\206\001\210\029\026\000\000\015\173\015\173\000\000\000\000\015\173\015\173\000\000\000\000\000\000\000\000\003\234\015\173\003\238\000\000\015\173\001\214\001\218\001\234\015\173\015\173\015\173\000\000\015\173\015\173\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\015\173\015\173\000\000\000\000\000\000\000\000\000\000\001\250\002\174\015\173\015\173\000\000\0036\006\245\003Z\003\150\003\162\000\000\000\000\000\000\015\173\003\174\015\173\001\193\001\193\000\000\000\000\000\000\001\193\006\245\000\000\001\193\006\245\000\000\015\173\015\173\000\000\000\000\003\178\015\173\015\173\001\193\001\193\001\193\000\000\001\193\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\001\193\001\193\000\000\000\000\000\000\b]\n=\000\000\000\000\000\000\000\000\001\193\002\222\001\193\001\193\002\150\000\000\r\234\001\193\000\000\003b\000\000\000\000\001\193\000\000\b]\000\000\004\150\000\000\001\193\001\214\000\000\014\002\000\000\003n\000\000\000\000\000\000\000\000\000\000\014\n\000\000\000\000\003r\000\000\t\182\000\000\000\000\000\000\000\000\000\000\000\000\t\210\t\214\000\000\000\000\t\230\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\000\000\014\018\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012f\r\138\000\000\000\000\000\000\000\000\000\000\005\229\005\246\0072\0076\000\000\005\229\000\000\000\000\005\229\000\000\000\000\000\000\000\000\012n\000\000\r\146\000\000\000\000\005\229\000\000!\202\020\186\005\229\000\000\005\229\000\000\000\000\007:\011\146\000\000\000\000\000\000\011\170\003\238\000\000\000\000\005\229\000\000\000\000\000\000\000\000\000\000\005\229\006\146\000\000\000\000\005\229\000\000\000\000\000\000\000\000\011\250\000\000\000\000\005\229\000\000\000\000\005\229\000\000\000\000\000\000\000\000\005\229\003\014\000\242\000\000\000\000\000\000\000\000\000\000\000\000\005\229\005\229\000\000\000\000\000\000\000\000\000\000\005\229\005\229\0011\000\000\005\229\012\150\000\000\0011\000\000\000\000\0011\000\000\000\000\000\000\005\229\005\229\006\158\000\000\005\229\005\229\0011\000\000\0011\000\000\0011\006\166\0011\000\000\000\000\005\229\000\000\000\000\000\000\006\170\000\000\000\000\005\229\000\000\0011\000\000\000\000!J\000\000\000\000\0011\020:\000\000\005\229\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\0011\000\000\000\000\000\000\000\000\0011\0011\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\0011\0011\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\0011\0011\000\000\0011\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\bb\005\237\000\000\b\"\000\000\0011\000\250\001\206\001\210\002&\b\170\000\000\000\000\000\000\b\182\000\000\0011\000\000\000\000\024j\000\000\000\000\000\000\005\237\000\000\003j\001\214\002\154\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\024n\000\000\000\000\000\000\000\000\000\000\024\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\174\000\000\000\000\000\000\0036\023\014\003Z\003\150\003\162\000\000\023&\000\000\000\000\003\174\000\000\000\000\b\229\005\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0256\000\000\000\000\000\000\003\178\000\000\014\150\000\000\000\000\b\229\002\t\000\000\000\000\b\229\023B\025J\000\000\000\000\005\237\005\237\014\254\015F\015^\015\022\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\146\015\142\015\166\025Z\000\000\000\000\000\000\000\000\003\234\000\000\003\238\000\000\000\000\015\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\174\015.\015\214\015\238\016\030\000\000\000\000\000\000\000\000\000\000\000\000\b\229\0166\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\016N\000\000#c\001\153\000\000\000\000\001\153\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\016\174\022^\016\230\016\006\000\000\000\000\001\153\000\000\001\153\016f\001\153\000\000\000\000\000\000\000\000\000\000\001\153\016~\016\150\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\001\153\001\153\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\130\002\222\001\153\001\153\002\150\000\000\011\006\000\000\000\000\003b\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\0116\001\153\000\000\021\162\000\000\005\150\000\000\000\000\012\166\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\005\162\000\000\001\153\001\153\000\000\000\000\012\210\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\r\161\006\238\000\000\006\246\000\000\012\250\007&\000\000\000\000\000\000\000\000\007\229\005\246\000\000\000\000\005\145\007\229\000\000\007*\007\229\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\000\000\007\229\017\n\031\170\000\000\007\229\000\000\007\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\161\000\000\007\229\r\161\r\161\000\000\007:\000\000\007\229\006\146\r\161\000\000\003\238\000\000\r\161\005\145\000\000\000\000\000\000\000\000\007\229\000\000\000\000\007\229\000\000\000\000\000\000\000\000\007\229\007\229\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\229\007\229\000\000\000\000\007\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\229\007\229\0055\000\000\007\229\007\229\007\029\005\246\000\000\000\000\000\000\007\029\000\000\000\000\007\029\007\229\000\000\0055\000\000\000\000\nJ\000\000\007\229\000\000\007\029\000\000\012>\0055\007\029\000\000\007\029\0055\000\000\007\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\029\000\000\000\000\000\000\000\000\000\000\007\029\006\146\000\000\000\000\000\000\000\000\001\185\000\000\000\000\011\250\000\000\001\185\007\029\023\150\001\185\007\029\002\150\000\000\000\000\000\000\007\029\007\029\000\242\000\000\001\185\000\000\000\000\000\000\001\185\000\000\001\185\000\000\000\000\000\000\028\026\000\000\007\029\007\029\000\000\000\000\007\029\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\185\000\000\007\029\007\029\r\170\000\000\007\029\007\029\000\000\023\154\000\000\000\000\001\185\000\000\000\000\001\185\000\000\000\000\000\000\bb\001\185\001\185\b\"\023\166\007\029\028>\000\000\000\000\000\000\b\170\000\000\000\000\000\000\b\182\000\000\007\029\001\185\001\185\000\000\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0076\001\185\001\185\000\000\000\000\001\185\001\185\004I\004I\000\000\000\000\028J\004I\000\000\000\000\004I\001\185\000\000\000\000\000\000\000\000\000\000\000\000\001\185\000\000\004I\000\000\004I\027\222\004I\000\000\004I\000\000\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004I\000\000\000\000\000\000\000\000\000\000\004I\004I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\205\000\000\000\000\004I\000\000\000\000\004I\000\000\000\000\000\000\000\000\004I\004I\004I\000\209\005\246\000\000\000\000\000\000\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\000\004I\004I\000\000\000\000\004I\000\209\000\000\002\017\000\000\000\209\000\000\000\209\000\000\000\000\004I\004I\004I\000\000\004I\004I\000\000\000\000\000\000\000\209\000\000\006\205\000\000\000\000\000\000\000\209\006\146\000\000\004I\004I\000\000\007a\004I\000\000\000\000\000\000\005\165\000\209\000\000\000\000\000\209\005\165\000\000\004I\005\165\000\209\000\209\000\242\000\000\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\000\000\005\165\000\000\005\165\000\209\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\000\209\000\209\005\021\005\165\000\209\000\209\000\213\005\246\000\000\000\000\000\000\000\213\000\000\000\000\000\213\005\165\000\000\005\021\005\165\000\000\nJ\000\000\000\209\005\165\000\213\000\000 f\005\021\000\213\000\000\000\213\005\021\000\000\000\209\000\000\000\000\000\000\000\000\000\000\005\165\005\165\000\000\000\213\005\165\000\000\000\000\000\000\000\000\000\213\006\146\000\000\000\000\000\000\005\165\005\165\000\000\000\000\005\165\005\165\007%\000\213\000\000\000\000\000\213\007%\000\000\000\000\007%\000\213\000\213\000\242\000\000\000\000\000\000\000\000\005\165\000\000\007%\000\000\031\154\000\000\007%\000\000\007%\000\213\000\213\030\154\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\007%\000\000\000\000\000\213\000\213\005%\007%\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\000\011\250\000\000\000\000\007%\000\000\005%\007%\000\000\nJ\000\000\000\213\007%\007%\000\242\000\000\005%\000\000\000\000\000\000\005%\000\000\000\213\000\000\000\000\000\000\000\000\000\000\007%\007%\000\000\000\000\007%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007%\007%\004\245\000\000\007%\007%\b\241\005\246\000\000\000\000\000\000\b\241\000\000\000\000\b\241\000\000\000\000\004\245\000\000\000\000\nJ\031\158\007%\000\000\b\241\000\000\005\133\004\245\b\241\000\000\b\241\004\245\000\000\007%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\241\000\000\000\000\000\000\000\000\000\000\b\241\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\b\241\000\000\000\000\b\241\007\225\000\000\000\000\007\225\b\241\b\241\000\242\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\t~\000\000\007\225\000\000\007\225\b\241\b\241\000\000\000\000\b\241\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\000\000\b\241\b\241\005\133\007\225\b\241\b\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\bb\007\225\000\000\b\"\012\182\b\241\007\225\007\225\000\242\000\000\b\170\000\000\000\000\000\000\b\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\007\225\000\000\000\000\007\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\007\225\028\022\000\000\007\225\007\225\000\000\000\000\022B\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\bb\000\000\000\000\b\"\t\130\007\225\000\000\014\150\000\000\000\000\b\170\002\001\000\000\t\225\b\182\000\000\007\225\000\000\000\000\000\000\000\000\014\254\015F\015^\015\022\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\142\015\166\000\000\000\000\000\000\000\000\000\000\011\250\000\000\000\000\000\000\000\000\015\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\174\015.\015\214\015\238\016\030\000\000\004-\000\000\000\000\000\000\000\000\004-\0166\001\210\004-\000\000\000\000\000\000\000\000\000\000\000\000\016N\011}#\163\004- \142\000\000\000\000\004-\000\000\004-\000\000\000\000\000\000\000\000\000\000\016\174\022F\016\230\016\006\022R\000\000\004-\000\000\000\000\016f\000\000\000\000\004-\001\173\000\000\000\000\000\000\016~\016\150\000\000\000\000\000\000\003\182\000\000\004-\000\000\000\000\004-\000\000\000\000\000\000\000\000\004-\004-\004-\000\000\000\221\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\004-\004-\000\000\000\000\004j\000\000\000\221\006\161\000\221\000\000\000\221\000\000\000\221\000\000\004-\004-\000\000\000\000\004-\004-\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\004-\000\221\000\000\000\000\000\000\000\221\000\000\004-\000\000\000\000\000\000\000\000\004-\000\221\000\000\000\000\000\221\000\000\004-\000\000\000\000\000\221\000\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\153\000\000\000\221\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\000\221\000\221\026j\000\000\000\221\000\221\000\153\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\221\000\000\000\221\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\153\000\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\161\000\000\000\153\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\153\000\153\028\202\000\000\000\153\000\153\000\161\000\000\000\161\000\000\000\161\000\000\000\161\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\153\000\000\000\153\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\161\000\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\157\000\000\000\161\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\161\000\161\029*\000\000\000\161\000\161\000\157\000\000\000\157\000\000\000\157\000\000\000\157\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\161\000\000\000\161\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\157\000\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\157\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\000\157\000\157\012Z\000\000\000\157\000\157\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\002\170\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\001\018\001\022\001\026\001\030\001\"\001&\000\000\000\000\000\157\000\000\000\157\000\000\000\000\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001:\000\000\000\000\001>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\007Q\007Q\000\000\000\000\000\000\007Q\001b\000\000\007Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158#\006\007Q\000\000\007Q\000\000\007Q\001\162\007Q\001\166\000\000\000\000\000\000\001\170\000\000\001\174\001\178\000\000\000\000\000\000\007Q\000\000\000\000\000\000\000\000\000\000\007Q\007Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007Q\000\000\000\000\007Q\000\000\000\000\007Q\000\000\000\000\000\000\000\000\007Q\007Q\007Q\004I\004I\000\000\000\000\000\000\004I\000\000\000\000\004I\000\000\000\000\000\000\000\000\007Q\007Q\000\000\000\000\007Q\004I\000\000\004I\000\000\004I\000\000\004I\000\000\000\000\007Q\007Q\007Q\000\000\007Q\007Q\000\000\000\000\000\000\004I\000\000\006\166\000\000\000\000\000\000\004I\004I\000\000\007Q\000\000\000\000\007Q\007Q\000\000\006\209\000\000\000\000\004I\000\000\000\000\004I\000\000\000\000\007Q\000\000\004I\004I\004I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004I\004I\000\000\000\000\004I\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\004I\004I\004I\000\000\004I\004I\000\000\000\000\000\000\000\000\000\000\006\209\000\000\000\000\007r\000\000\001\214\002\154\004I\004I\003\130\002\222\004I\000\000\002\150\000\000\003\134\000\000\000\000\003b\000\000\000\000\000\000\004I\007v\000\000\b\234\000\000\000\000\001\214\000\000\000\000\003: j\000\000\000\000\005\150\0036\000\000\003Z\003\150\003\162\000\000\000\000\000\000\000\000\003\174\000\000\000\000\005\162\000\000\000\000\000\000\000\000\000\000\005\174\001\194\000\000\000\000\000\000\000\000\000\000\003Z\003\178\000\000\006\234\006\153\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \130\007\133\007\133\007*\000\000\000\000\007\133\000\000\000\000\007\133\000\000\0072\0076\000\000\007\182\000\000\000\000\000\000\000\000\007\133\007\194\007\133\000\000\007\133\000\000\007\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\210\000\000\000\000\007:\007\133\t&\000\000\000\000\000\000\003\238\007\133\007\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\250\000\000\000\000\007\133\000\000\000\000\007\133\000\000\000\000\000\000\000\000\007\133\007\133\000\242\015\253\015\253\000\000\000\000\000\000\015\253\000\000\000\000\015\253\000\000\000\000\000\000\000\000\007\133\007\133\000\000\000\000\007\133\015\253\000\000\015\253\000\000\015\253\000\000\015\253\000\000\000\000\007\133\007\133\007\133\000\000\007\133\007\133\000\000\000\000\000\000\015\253\000\000\000\000\000\000\000\000\000\000\015\253\015\253\000\000\007\133\000\000\000\000\0122\007\133\000\000\003\190\000\000\000\000\015\253\000\000\000\000\015\253\000\000\000\000\007\133\000\000\015\253\015\253\015\253\007E\007E\000\000\000\000\000\000\007E\000\000\000\000\007E\000\000\000\000\000\000\000\000\015\253\015\253\000\000\000\000\015\253\007E\000\000\007E\000\000\007E\000\000\007E\000\000\000\000\015\253\015\253\015\253\000\000\015\253\015\253\000\000\000\000\000\000\007E\000\000\003\206\000\000\000\000\000\000\007E\007E\000\000\015\253\000\000\000\000\000\000\015\253\000\000\011\250\000\000\000\000\007E\000\000\000\000\007E\000\000\000\000\015\253\000\000\007E\007E\000\242\011\025\011\025\000\000\000\000\000\000\011\025\000\000\000\000\011\025\000\000\000\000\000\000\000\000\007E\007E\000\000\000\000\007E\011\025\000\000\011\025\000\000\011\025\000\000\011\025\000\000\000\000\007E\007E\007E\000\000\007E\007E\000\000\000\000\000\000\011\025\000\000\000\000\000\000\000\000\000\000\011\025\011\025\000\000\007E\000\000\000\000\007E\007E\000\000\000\000\000\000\000\000\011\025\000\000\001\n\011\025\000\000\000\000\007E\000\000\011\025\011\025\011\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\011\025\011\025\000\000\000\000\011\025\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\011\025\011\025\011\025\000\000\011\025\011\025\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\000\011\025\000\000\001:\011\025\000\000\001>\000\000\011\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\150\000\000\011\025\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\015\249\015\249\000\000\000\000\000\000\015\249\001b\000\000\015\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158#\"\015\249\000\000\015\249\000\000\015\249\001\162\015\249\001\166\000\000\000\000\000\000\001\170\000\000\001\174\001\178\000\000\000\000\000\000\015\249\000\000\000\000\000\000\000\000\000\000\015\249\015\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\190\000\000\000\000\015\249\000\000\000\000\015\249\000\000\000\000\000\000\000\000\015\249\015\249\015\249\001\189\000\000\000\000\000\000\000\000\001\189\000\000\023\150\001\189\000\000\002\150\000\000\000\000\015\249\015\249\000\000\000\000\015\249\001\189\000\000\000\000\000\000\001\189\000\000\001\189\000\000\000\000\015\249\015\249\015\249\000\000\015\249\015\249\000\000\000\000\000\000\001\189\000\000\003\206\000\000\000\000\000\000\001\189\000\000\000\000\015\249\000\000\000\000\000\000\015\249\000\000\023\154\000\000\000\000\001\189\000\000\000\000\001\189\000\000\004!\015\249\000\000\001\189\001\189\004!\023\166\001\210\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\254\000\000\004!\001\189\001\189\000\000\004!\001\189\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0076\001\189\001\189\000\000\004!\001\189\001\189\000\000\000\000\000\000\004!\015-\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\000\003\182\000\000\004!\001\189\000\000\004!\000\000\000\000\027\242\000\000\004!\004!\004!\000\000\001\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\004!\000\000\000\000\004j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\004!\001\173\000\000\004!\004!\000\000\001\173\000\000\001\210\001\173\000\000\000\000\000\000\000\000\004!\000\000\000\000\011}\000\000\001\173\000\000\004!\000\000\001\173\000\000\001\173\004!\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001\173\b\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\173\000\000\000\000\001\173\000\000\011\205\000\000\000\000\001\173\001\173\001\173\003\130\002\222\000\000\000\000\002\150\000\000\003\134\000\000\000\000\003b\000\000\000\000\000\000\001\173\001\173\000\000\011\205\004j\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\001\173\001\173\005\197\000\000\001\173\001\173\000\000\005\197\000\000\000\000\005\197\000\000\005\162\000\000\000\000\001\173\000\000\000\000\005\174\001\194\005\197\000\000\001\173\000\000\005\197\003Z\005\197\001\173\006\234\000\000\000\000\000\000\006\238\001\173\006\246\007\026\007z\007&\005\197\000\000\000\000\000\000\000\000\000\000\005\197\000\000\000\000\011\029\011\029\007*\000\000\000\000\011\029\000\000\000\000\011\029\000\000\0072\0076\005\197\007\182\000\000\000\000\000\000\005\197\011\029\007\194\011\029\000\000\011\029\000\000\011\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\197\000\000\007:\011\029\011\205\000\000\012\142\000\000\003\238\011\029\011\029\000\000\000\000\000\000\005\197\005\197\000\000\000\000\005\197\005\197\000\000\011\029\000\000\000\000\011\029\000\000\000\000\000\000\000\000\011\029\011\029\000\242\000\000\001\141\000\000\000\000\005\197\000\000\001\141\000\000\000\000\001\141\000\000\000\000\000\000\011\029\011\029\024\230\000\000\011\029\000\000\001\141\000\000\000\000\000\000\001\141\000\000\001\141\000\000\011\029\011\029\011\029\000\000\011\029\011\029\000\000\000\000\000\000\000\000\001\141\001\141\000\000\000\000\000\000\011\029\001\141\000\000\011\029\000\000\000\000\000\000\011\029\000\000\000\000\006\205\000\000\000\000\001\141\000\000\000\000\001\141\000\000\011\029\000\000\000\000\001\141\001\141\001\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\001\141\000\000\000\000\001\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\001\141\001\177\000\000\001\141\001\141\000\000\001\177\000\000\001\210\001\177\006\205\000\000\000\000\000\000\001\141\000\000\000\000\011\129\000\000\001\177\001\141\001\141\000\000\001\177\000\000\001\177\001\141\000\000\000\000\000\000\000\000\000\000\001\141\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\000\000\000\000\001\177\001\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\177\000\000\000\000\001\177\000\000\000\000\000\000\000\000\001\177\001\177\001\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\001\177\000\000\000\000\004j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\001\177\004)\000\000\001\177\001\177\000\000\004)\000\000\001\210\004)\000\000\000\000\000\000\000\000\001\177\000\000\000\000\011}\000\000\004)\000\000\001\177\000\000\004)\000\000\004)\001\177\000\000\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\000\000\004)\000\000\000\000\000\000\000\000\000\000\004)\001\173\000\000\000\000\000\000\000\000\015\241\015\241\000\000\000\000\003\182\015\241\004)\000\000\015\241\004)\000\000\000\000\000\000\000\000\004)\004)\004)\000\000\015\241\000\000\015\241\000\000\015\241\000\000\015\241\000\000\000\000\000\000\000\000\000\000\004)\004)\000\000\000\000\004j\000\000\015\241\000\000\000\000\000\000\000\000\000\000\015\241\015\241\004)\004)\000\000\000\000\004)\004)\000\000\000\000\000\000\000\000\015\241\000\000\000\000\015\241\000\000\004)\000\000\000\000\015\241\015\241\015\241\000\000\004)\000\000\000\000\000\000\000\000\004)\000\000\000\000\000\000\000\000\000\000\004)\015\241\015\241\015\245\015\245\015\241\000\000\000\000\015\245\000\000\000\000\015\245\000\000\000\000\000\000\015\241\015\241\015\241\000\000\015\241\015\241\015\245\000\000\015\245\000\000\015\245\000\000\015\245\b\154\000\000\006>\000\000\000\000\015\241\001\206\001\210\028\186\015\241\000\000\015\245\000\000\000\000\000\000\000\000\000\000\015\245\015\245\000\000\015\241\000\000\000\000\000\000\000\000\001\214\001\218\001\234\000\000\015\245\000\000\000\000\015\245\000\000\000\000\001\246\000\000\015\245\015\245\015\245\000\000\000\000\002\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\174\015\245\015\245\000\000\0036\015\245\003Z\003\150\003\162\000\000\000\000\000\000\000\000\003\174\000\000\015\245\015\245\015\245\000\000\015\245\015\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000!*\000\000\003\178\000\000\000\000\015\245\003\130\002\222\000\000\015\245\002\150\000\000\003\134\000\000\000\000\003b\000\000\000\000\004\150\000\000\015\245\000\000\006\242\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\004\025\000\000\000\000\000\000\000\000\004\025\000\000\005\162\004\025\000\000\000\000\000\000\000\000\005\174\001\194\000\000\000\000\000\000\004\025\000\000\003Z\000\000\004\025\006\234\004\025\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\004\025\023\174\000\000\000\000\000\000\000\000\004\025\000\000\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\004\025\007\182\000\000\004\025\000\000\000\000\000\000\007\194\004\025\004\025\004\025\000\000\t\237\000\000\000\000\000\000\000\000\t\237\000\000\000\000\t\237\000\000\000\000\007:\004\025\004\025\000\000\012\142\004\025\003\238\t\237\000\000\t\237\000\000\t\237\000\000\t\237\000\000\004\025\004\025!R\000\000\004\025\004\025\000\000\000\000\000\000\000\000\t\237\000\000\000\000\000\000\000\000\004\025\t\237\000\000\000\000\000\000\t\237\024*\004\025\000\000\000\000\000\000\000\000\004\025\t\237\000\000\000\000\t\237\000\000\004\025\000\000\000\000\t\237\t\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\237\t\237\000\000\000\000\000\000\000\000\000\000\t\237\t\237\007}\005\246\t\237\000\000\000\000\007}\000\000\000\000\007}\000\000\000\000\000\000\t\237\t\237\t\237\000\000\t\237\t\237\007}\000\000\007}\000\000\007}\000\000\007}\000\000\000\000\t\237\000\000\000\000\000\000\000\000\000\000\000\000\t\237\000\000\007}\000\000\000\000\000\000\000\000\000\000\007}\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007}\000\000\000\000\007}\000\000\000\000\000\000\000\000\007}\007}\000\242\007\157\007\157\000\000\000\000\000\000\007\157\000\000\000\000\007\157\000\000\000\000\000\000\000\000\007}\007}\000\000\000\000\007}\007\157\000\000\007\157\000\000\007\157\000\000\007\157\000\000\000\000\007}\007}\007}\000\000\007}\007}\000\000\000\000\000\000\007\157\000\000\000\000\000\000\000\000\000\000\007\157\007\157\000\000\007}\000\000\000\000\000\000\007}\000\000\000\000\000\000\000\000\007\157\000\000\000\000\007\157\000\000\000\000\007}\000\000\007\157\007\157\007\157\007\129\005\246\000\000\000\000\000\000\007\129\000\000\000\000\007\129\000\000\000\000\000\000\000\000\007\157\007\157\000\000\000\000\007\157\007\129\000\000\007\129\000\000\007\129\000\000\007\129\000\000\000\000\007\157\007\157\007\157\000\000\007\157\007\157\000\000\000\000\000\000\007\129\000\000\000\000\000\000\000\000\000\000\007\129\006\146\000\000\007\157\000\000\000\000\000\000\007\157\000\000\000\000\000\000\000\000\007\129\000\000\000\000\007\129\000\000\000\000\006\186\000\000\007\129\007\129\000\242\007\153\005\246\000\000\000\000\000\000\007\153\000\000\000\000\007\153\000\000\000\000\000\000\000\000\007\129\007\129\000\000\000\000\007\129\007\153\000\000\007\153\000\000\007\153\000\000\007\153\000\000\000\000\007\129\007\129\007\129\000\000\007\129\007\129\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\007\153\006\146\000\000\007\129\000\000\000\000\000\000\007\129\000\000\000\000\000\000\000\000\007\153\000\000\000\000\007\153\000\000\000\000\007\129\000\000\007\153\007\153\000\242\016\005\016\005\000\000\000\000\000\000\016\005\000\000\000\000\016\005\000\000\000\000\000\000\000\000\007\153\007\153\000\000\000\000\007\153\016\005\000\000\016\005\000\000\016\005\000\000\016\005\000\000\000\000\007\153\007\153\007\153\000\000\007\153\007\153\000\000\000\000\000\000\016\005\000\000\000\000\000\000\000\000\000\000\016\005\006\146\000\000\007\153\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\016\005\000\000\000\000\016\005\000\000\000\000\007\153\000\000\016\005\016\005\000\242\016\001\016\001\000\000\000\000\000\000\016\001\000\000\000\000\016\001\000\000\000\000\000\000\000\000\016\005\016\005\000\000\000\000\016\005\016\001\000\000\016\001\000\000\016\001\000\000\016\001\000\000\000\000\016\005\016\005\016\005\000\000\016\005\016\005\000\000\000\000\000\000\016\001\000\000\000\000\000\000\000\000\000\000\016\001\016\001\000\000\016\005\000\000\000\000\000\000\016\005\000\000\000\000\000\000\000\000\016\001\000\000\000\000\016\001\000\000\000\000\016\005\000\000\016\001\016\001\000\242\t\241\000\000\000\000\000\000\000\000\t\241\000\000\000\000\t\241\000\000\000\000\000\000\000\000\016\001\016\001\000\000\000\000\016\001\t\241\000\000\t\241\000\000\t\241\000\000\t\241\000\000\000\000\016\001\016\001\016\001\000\000\016\001\016\001\000\000\000\000\000\000\t\241\000\000\000\000\000\000\000\000\000\000\t\241\000\000\000\000\016\001\t\241\000\000\000\000\016\001\000\000\000\000\000\000\000\000\t\241\000\000\000\000\t\241\000\000\000\000\016\001\000\000\t\241\t\241\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\241\t\241\000\000\000\000\000\000\000\000\000\000\t\241\t\241\000\000\000\000\t\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\t\241\t\241\t\241\006\197\t\241\t\241\000\000\000\000\006\197\000\000\006\197\006\197\000\000\000\000\000\000\t\241\000\000\001\214\002\154\006\197\000\000\006\197\t\241\006\197\000\000\006\197\000\000\006\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\197\000\000\000\000\000\000\003: j\006\197\006\197\000\000\0036\000\000\003Z\003\150\003\162\000\000\000\000\006\197\000\000\003\174\000\000\000\000\006\197\000\000\000\000\000\000\000\000\006\197\006\197\006\197\001-\000\000\000\000\000\000\000\000\001-\003\178\000\000\001- \150\000\000\000\000\000\000\006\197\000\000\000\000\000\000\006\197\001-\000\000\001-\000\000\001-\000\000\001-\000\000 \130\006\197\006\197\006\197\000\000\006\197\006\197\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\001-\000\000\026\230\006\197\000\000\000\000\000\000\000\000\001-\000\000\000\000\001-\000\000\000\000\006\197\000\000\001-\001-\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\001-\001-\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\001-\001-\000\000\001-\001-\000\000\000\000\003\130\002\222\000\000\000\000\002\150\000\000\011\006\001-\000\000\003b\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\001\214\000\000\0116\000\000\000\000\000\000\001-\005\150\000\000\000\000\012\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\209\000\000\005\162\000\000\000\000\000\000\000\000\000\000\012\210\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\007-\005\246\006\238\000\000\006\246\007-\012\250\007&\007-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007-\007*\002\025\000\000\007-\000\000\007-\000\000\000\000\0072\0076\000\000\000\000\003\209\000\000\000\000\000\000\000\000\007-\000\000\000\000\000\000\000\000\000\000\007-\006\146\000\000\000\000\000\000\003\209\005\229\000\000\003\209\000\000\007:\005\229\000\000\000\000\005\229\007-\003\238\000\000\000\000\000\000\007-\007-\000\242\000\000\005\229\000\000\003\202\000\000\005\229\000\000\005\229\000\000\000\000\000\000\000\000\000\000\007-\000\000\000\000\000\000\000\000\000\000\005\229\000\000\000\000\000\000\000\000\000\000\005\229\000\000\007-\007-\020\250\000\000\007-\007-\000\000\003\190\000\000\000\000\005\229\000\000\000\000\005\229\000\000\000\000\000\000\017\142\005\229\003\014\nJ\000\000\007-\000\000\000\000\000\000\000\000\017\194\000\000\000\000\000\000\017\206\000\000\000\000\005\229\005\229\000\000\000\000\005\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\229\005\229\000\000\000\000\005\229\005\229\000\000\000\000\000\000\000\000\000\000\003\206\000\000\000\000\000\000\006>\000\000\003\130\002\222\000\000\000\000\002\150\005\229\011\006\000\000\000\000\003b\027\242\000\000\000\000\000\000\000\000\000\000\005\229\000\000\000\000\001\214\000\000\0116\000\000\000\000\000\000\000\000\005\150\000\000\bf\012\166\000\000\000\000\000\000\000\000\003\130\002\222\000\000\029\174\002\150\005\162\bj\000\000\000\000\003b\000\000\028\138\001\194\000\000\000\000\000\000\000\000\000\000\003Z\001\214\000\000\006\234\000\000\000\000\000\000\006\238\005\150\006\246\000\000\012\250\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\000\000\007*\000\000\000\000\005\174\001\194\000\000\000\000\000\000\0072\0076\003Z\000\000\028\142\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\b\134\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030z\000\000\007:\007*\000\000\000\000\000\000\000\000\003\238\000\000\004%\0072\0076\000\000\007\182\004%\000\000\001\210\004%\001U\007\194\000\000\000\000\b\142\001U\001\206\001\210\001U\004%\000\000\000\000\000\000\004%\000\000\004%\000\000\007:\001U\000\000\001U\000\000\001U\003\238\001U\001\214\002\154\004%\000\000\000\000\000\000\000\000\000\000\004%\000\000\000\000\001U\000\000\000\000\000\000\000\000\000\000\001U\003\182\000\000\004%\000\000\000\000\004%\000\000\000\000\003:\003\182\004%\004%\004%\0036\001U\003Z\003\150\003\162\000\000\001U\001U\000\242\003\174\000\000\023\178\000\000\004%\004%\000\000\000\000\004j\000\000\000\000\000\000\000\000\001U\000\000\000\000\000\000\003\178\004%\004%\000\000\000\000\004%\004%\000\000\000\000\000\000\001U\001U\001U\001\029\001U\001U\004%\000\000\001\029\000\000\0029\001\029\000\000\004%\000\000\000\000\000\000\000\000\004%\0029\000\000\001\029\001U\001\029\004%\001\029\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001U\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001\029\0029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0029\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\001\029\001\029\001\029\001i\000\000\000\000\000\000\000\000\001i\000\000\015Q\001i\000\000\000\000\000\000\000\000\001\029\000\000\000\000\015Q\0029\001i\000\000\001i\000\000\001i\000\000\001i\000\000\000\000\001\029\001\029\001\029\000\000\001\029\001\029\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\000\000\001i\015Q\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\015Q\015I\000\000\000\000\000\000\001i\015I\000\000\001\029\015I\001i\001i\001i\000\000\000\000\001\206\001\210\000\000\000\000\015I\000\000\000\000\000\000\015I\000\000\015I\001i\000\000\000\000\000\000\015Q\006\197\000\000\000\000\001\214\001\218\000\000\015I\000\000\000\000\001i\001i\001i\015I\001i\001i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\015I\000\000\003:\003\182\001i\015I\015I\0036\000\000\003Z\003\150\003\162\000\000\000\000\000\000\001i\003\174\000\000\023\178\000\000\000\000\015I\015I\000\000\000\000\015I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\178\000\000\015I\015I\002\142\000\000\015I\015I\b\174\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\015I\002\150\000\000\003\134\"B\000\000\003b\015I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\015I\000\000\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\000\000\000\000\000\000\000\000\005\174\001\194\000\000\000\000\b\181\b\181\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\b\181\b\181\b\181\003\130\002\222\000\000\000\000\002\150\007*\007\246\b\181\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\b\181\b\181\000\000\005\150\000\000\b\181\000\000\b\181\b\181\b\181\000\000\000\000\000\000\000\000\b\181\007:\005\162\000\000\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\b\181\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\b\018\007&\b&\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\007*\003\134\000\000\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\000\000\000\000\b\026\005\150\005\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\005\162\000\000\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\017\198\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\007*\003\134\000\000\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\004\025\000\000\000\000\000\000\000\000\004\025\007:\005\162\004\025\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\000\000\004\025\000\000\003Z\000\000\004\025\006\234\004\025\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\004\025\023\174\000\000\000\000\000\000\000\000\004\025\000\000\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\004\025\007\182\000\000\004\025\000\000\000\000\000\000\007\194\004\025\004\025\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\004\025\004\025\000\000\000\000\004\025\003\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\025\004\025!\130\000\000\004\025\004\025\000\000\003\130\002\222\000\000\000\000\002\150\000\000\011\006\000\000\000\000\003b\000\000\000\000\000\000\000\000\024*\004\025\000\000\000\000\000\000\001\214\004\025\0116\000\000\000\000\000\000\000\000\005\150\000\000\000\000\012\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\000\000\000\000\000\000\000\000\012\210\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\000\000\012\250\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b5\000\000\000\000\000\000\007*\000\000\000\000\002\222\000\000\000\000\002\150\000\000\0072\0076\000\000\003b\017\n\000\000\000\000\000\000\b5\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003n\000\000\000\000\000\000\000\000\000\000\029\022\000\000\007:\003r\000\000\t\182\000\000\000\000\003\238\000\000\000\000\000\000\t\210\t\214\000\000\000\000\t\230\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\t\238\000\000\000\000\000\000\011z\011~\011\138\000\000\000\000\007&\000\000\000\000\003\130\002\222\000\000\000\000\002\150\000\000\007\134\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\000\000\007:\011\146\000\000\005\174\001\194\011\170\003\238\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\007\162\007&\000\000\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\007*\tN\000\000\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\000\000\000\000\b\202\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\005\162\000\000\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\tj\007&\nN\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\007*\003\134\000\000\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\000\000\000\000\tr\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\005\162\000\000\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\007z\007&\000\000\000\000\000\000\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\007*\005z\000\000\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\000\000\007\194\000\000\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\005\162\000\000\000\000\000\000\000\000\003\238\005\174\001\194\000\000\000\000\b\185\b\185\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\t6\007&\003\166\000\000\000\000\b\185\b\185\b\185\003\130\002\222\000\000\000\000\002\150\007*\011\006\b\185\000\000\003b\000\000\000\000\000\000\0072\0076\000\000\007\182\000\000\000\000\001\214\000\000\0116\007\194\b\185\b\185\t>\005\150\000\000\b\185\012\166\b\185\b\185\b\185\000\000\000\000\000\000\000\000\b\185\007:\005\162\000\000\000\000\000\000\000\000\003\238\012\210\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\b\185\006\234\000\000\000\000\000\000\006\238\000\000\006\246\000\000\012\250\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\217\000\000\000\000\000\000\007*\007\217\000\000\002\222\007\217\000\000\000\000\000\000\0072\0076\000\000\023r\017\n\000\000\007\217\003\154\000\000\b\185\007\217\004\025\007\217\000\000\000\000\000\000\004\025\000\000\000\000\004\025\000\000\000\000\000\000\028\182\007\217\007:\000\000\000\000\000\000\004\025\007\217\003\238\000\000\004\025\000\000\004\025\000\000\000\000\000\000\001\006\001\194\000\000\007\217\000\000\000\000\007\217\000\000\004\025\023\174\000\000\007\217\007\217\000\000\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\025\007\217\007\217\004\025\000\000\007\217\000\000\000\000\004\025\004\025\004\025\000\000\000\000\000\000\000\000\007\217\007\217\000\000\000\000\007\217\007\217\000\000\000\000\000\000\004\025\004\025\000\000\000\000\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\217\004\025\004\025\024\n\017\146\004\025\004\025\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\000\000\017\150\000\000\000\000\003b\000\000\000\000\024*\004\025\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\b9\000\000\000\000\000\000\005\150\000\000\003\130\002\222\000\000\000\000\002\150\000\000\t\254\000\000\000\000\003b\000\000\005\162\000\000\000\000\b9\000\000\000\000\005\174\001\194\001\214\000\000\000\000\000\000\000\000\003Z\000\000\005\150\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\017\178\007&\000\000\000\000\005\162\000\000\000\000\000\000\000\000\000\000\005\174\001\194\000\000\007*\000\000\000\000\000\000\003Z\000\000\000\000\006\234\0072\0076\000\000\006\238\000\000\006\246\007\026\n\202\007&\000\000\000\000\000\000\017\186\000\000\015\185\005\246\000\000\023\030\000\000\015\185\007*\000\000\000\000\000\000\000\000\007:\000\000\000\000\0072\0076\000\000\003\238\000\000\000\000\002\029\000\000\t\229\000\000\015\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\000\000\000\000\000\000\006\146\000\000\003\238\015\185\000\000\000\000\000\000\000\000\b\186\000\000\000\000\000\000\000\000\015\001\015\185\002\222\015\001\000\000#\242\015\185\015\185\000\242\000\000#\246\000\000\000\000\015\001\000\000\015\185\015\185\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\017z\000\000#\207\015\185\000\000\000\000\000\000\000\000\001\006\001\194\000\000\015\001\000\000\015\185\015\001\bb\001\153\000\000\b\"\015\001\000\000\001\153\000\000\000\000\001\153\b\170\000\000#\250\000\000\b\182\000\000\000\000\000\000\000\000\001\153\015\001\000\000\000\000\001\153\015\001\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000#\254\015\001\015\001\000\000\001\153\015\001\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\015\001\000\000\001\153\000\000\000\000\000\000\000\000\001\153\001\153\001\153\003\130\002\222\000\000\000\000\002\150\000\000\n\026\000\000\000\000\003b\000\000\000\000\000\000\001\153\001\153\000\000\000\000\001\153\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\001\153\001\153\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\024\022\005\162\000\000\000\000\000\000\000\000\000\000\005\174\001\194\000\000\000\000\001\153\000\000\000\000\003Z\000\000\001\153\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\n6\007&\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\000\000\nj\000\000\007*\003b\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\n>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\007:\000\000\000\000\000\000\005\174\001\194\003\238\000\000\000\000\000\000\000\000\003Z\000\000\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\007\026\n\134\007&\000\000\000\000\000\000\003\130\002\222\000\000\000\000\002\150\000\000\n\158\000\000\007*\003b\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\n\142\000\000\000\000\000\000\b\237\000\000\000\000\000\000\000\000\b\237\000\000\005\162\b\237\007:\000\000\000\000\000\000\005\174\001\194\003\238\000\000\000\000\b\237\000\000\003Z\000\000\b\237\006\234\b\237\000\000\000\000\006\238\000\000\006\246\007\026\n\186\007&\000\000\000\000\000\000\b\237\000\000\000\000\000\000\000\000\000\000\b\237\000\000\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0072\0076\b\237\000\000\000\000\b\237\000\000\000\000\000\000\000\000\b\237\b\237\n\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\b\237\b\237\015I\000\000\b\237\003\238\000\000\015I\000\000\000\000\015I\000\000\000\000\000\000\b\237\b\237\022\154\000\000\b\237\b\237\015I\000\000\000\000\000\000\015I\000\000\015I\000\000\000\000\000\000\000\000\000\000\006\197\024\170\000\000\000\000\b\237\000\000\015I\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\000\000\000\000\015I\015I\000\000\000\000\b\201\005\246\000\000\000\000\000\000\b\201\000\000\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\001\206\002\146\000\000\000\000\002\150\002\021\000\000\011\161\000\000\b\201\000\000\015I\015I\002\142\000\000\015I\015I\000\000\000\000\001\214\002\154\001\234\002\162\000\000\000\000\000\000\015I\000\000\006\146\001\246\"z\b\201\000\000\015I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\201\000\000\015I\002\166\002\174\b\201\b\201\000\242\0036\000\000\003Z\003\150\003\162\000\000\b\201\b\201\000\000\027\194\000\000\027\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\181\011\161\000\000\000\000\000\000\005\181\000\000\003\178\005\181\000\000\006F\000\000\000\000\b\201\000\000\000\000\0076\027\210\005\181\000\000\000\000\000\000\005\181\b\201\005\181\000\000\000\000\027\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\161\005\181\000\000\000\000\030&\000\000\014\229\005\181\000\000\027\222\000\000\014\229\000\000\005\213\014\229\000\000\000\000\000\000\005\213\005\181\000\000\005\213\005\181\000\000\014\229\000\000\000\000\005\181\014\229\000\000\014\229\005\213\000\000\000\000\000\000\005\213\000\000\005\213\000\000\000\000\000\000\000\000\014\229\005\181\005\181\000\000\000\000\005\181\014\229\005\213\000\000\000\000\000\000\000\000\000\000\005\213\000\000\005\181\005\181\000\000\014\229\005\181\005\181\014\229\000\000\000\000\000\000\005\213\014\229\000\000\005\213\000\000\000\000\000\000\000\000\005\213\000\000\000\000\000\000\005\181\000\000\000\000\000\000\000\000\014\229\014\134\000\000\000\000\014\229\000\000\026\162\005\213\005\213\000\000\000\000\005\213\000\000\000\000\014\229\014\229\000\000\000\000\014\229\014\229\000\000\005\213\005\213\003\130\002\222\005\213\005\213\002\150\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\014\229\000\000\003\194\000\000\000\000\000\000\001\214\005\213\001\206\001\210\000\000\016\254\000\000\005\150\000\000\000\000\000\000\000\000\027\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\001\214\002\154\001\234\000\000\000\000\012\254\001\194\000\000\000\000\000\000\001\246\000\000\003Z\025\138\000\000\006\234\000\000\000\000\000\000\006\238\000\000\006\246\000\000\000\000\007&\000\000\003:\026\226\000\000\026\002\000\000\0036\000\000\003Z\003\150\003\162\007*\000\000\000\000\000\000\026\242\000\000\000\000\000\000\0072\0076\001.\000\000\000\000\000\000\002!\000\000\002!\002!\025^\000\000\000\000\003\178\000\000\000\000\002!\000\000\tm\002!\015\017\tm\000\000\015\017\000\000\007:\000\000\002!\000\000\000\000\000\000\003\238\000\000\015\017\000\000\000\n\000\000\tm\tm\015\017\tm\tm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\002!\002!\000\000\004\161\015\017\000\000\004\161\002!\tm\000\000\000\000\000\000\000\000\002!\002!\000\000\015\017\000\000\000\000\015\017\000\000\000\000\004\161\004\161\015\017\004\161\004\161\000\000\000\000\tm\000\000\000\000\000\000\000\000\000\000\002!\000\000\000\000\000\000\000\000\015\017\000\000\000\000\000\000\015\017\000\000\004\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\015\017\000\000\000\000\015\017\tm\000\000\tm\000\000\000\000\000\000\023b\000\000\000\242\000\000\011Z\n\233\000\000\000\000\n\233\tm\000\000\015\017\b\"\tm\000\000\000\000\000\000\tm\000\000\tm\000\000\000\000\000\000\tm\n\233\n\233\000\000\n\233\n\233\000\000\000\000\000\000\004\161\000\000\004\161\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\004\209\000\000\000\000\000\000\004\161\n\233\000\000\b\"\004\161\000\000\000\000\000\000\004\161\000\000\004\161\000\000\004\209\004\209\004\161\004\209\004\209\000\000\000\000\000\000\000\000\004\225\n\233\000\000\004\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\004\225\004\225\000\000\004\225\004\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\233\000\000\n\233\000\000\000\000\000\242\000\000\000\000\004\193\000\000\000\000\004\193\004\225\000\000\000\000\007\242\000\000\000\000\n\233\n\233\000\000\000\000\000\000\n\233\000\000\n\233\000\000\004\193\004\193\n\233\004\193\004\193\000\000\000\242\000\000\004\209\000\000\004\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\209\004\193\000\000\b\"\004\209\000\000\000\000\000\000\004\209\000\000\004\209\000\000\000\000\004\225\004\209\004\225\000\000\000\000\000\000\000\000\000\000\t\137\000\242\000\000\t\137\000\000\000\000\000\000\004\225\000\000\000\000\b\"\004\225\000\000\000\000\000\000\004\225\000\000\004\225\000\000\t\137\t\137\004\225\t\137\t\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\193\000\000\004\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\137\000\000\000\000\004\193\000\000\000\000\b\"\004\193\000\000\000\000\000\000\004\193\000\000\004\193\000\000\000\000\000\000\004\193\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\137\000\000\t\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bb\000\000\000\000\b\"\t\137\000\000\000\000\000\000\t\137\000\000\t\137\000\000\000\000\000\000\t\137" + "\003\213\003\213\000\006\017*\026\"\003\213\002\238\002\226\003\213\003\026\002\150\003\213\003&\003\213\012\174\003f\003\213\030\022\003\213\003\213\003\213#\159\003\213\003\213\003\213\001\214\003R\024\202\006\170\003r\003\213\t\178\t\182\014\250\003\213\015}\003\213\030\026\003v\005\206\t\186\024\222\003\213\003\213\t\206\t\210\003\213\t\214\t\218\003\213\t\222\t\234\t\246\t\254\011J\015}\003\213\003\213\003^\012\178\012\206\t\242\003\213\003\213\003\213\011~\011\130\011\142\011\162\012b\007*\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\012z\000\242\003\213\001\238\003\213\003\213 *\012\134\012\158\r\158\0076\007:\003\213\003\213\003\213\017R\003\213\003\213\003\213\002z\003\213\025\134\0032\020J\003\213\rf\003\213\003\213\025\182\003\213\003\213\003\213\003\213\003\213\003\213\007>\011\150\003\213\003\213\003\213\011\174\003\242\r\178\019\202\003\213\003\213\003\213\003\213\004\161\004\161\030\030\018b\005\210\004\161\004\161\004\161\004\161\004\178\004\161\004\161\004\161\004\161${\004\161\004\161\025\190\004\161\004\161\004\161\002:\004\161\004\161\004\161\004\161\018f\004\161\007\193\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\018:\004\161\019\006\004\161\004\018\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\003\194\004\161\004\161\019.\004\161\019V\004\161\004\161\004\161\018>\002~\004\161\004\161\004\161\004\161\004\161\004\161\004\161\001\242\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\017\222\012j\r\142\018\182\004\161\004\161\017>\006\018\017\166\017\186\004\161\004\161\004\161\004\161\004\161#\143\004\161\004\161\004\161\019\206\004\161\012r\003\210\r\150\004\161\018\186\004\161\004\161\025v\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\004\161\015\129\004\161\004\161\004\161\004\161\004\161\015\185\015\185\004&\001\006\001\194\015\185\015\185\015\185\015\185\004y\015\185\015\185\015\185\015\185\015\129\015\185\015\185\018\018\015\185\015\185\015\185\004q\015\185\015\185\015\185\015\185\017j\015\185\015\221\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\018\022\015\185\t\162\015\185\015\221\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\007\185\015\185\015\185\019\178\015\185\t\250\015\185\015\185\015\185\005Z\015\133\015\185\015\185\015\185\015\185\015\185\015\185\015\185\bI\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\133\015\185\015\185\004y\015\185\015\185\002V\006~\bI$?\015\185\015\185\015\185\015\185\015\185\005\230\015\185\015\185\015\185\002Z\015\185\015\185\011\022\015\185\015\185\007\217\015\185\015\185\002F\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\015\185\005^\001z\015\185\015\185\015\185\015\185\r-\r-\011\197#*\001\226\r-\r-\r-\r-\b>\r-\r-\r-\r-\019\182\r-\r-\018\142\r-\r-\r-\021\242\r-\r-\r-\r-\017\170\r-\004\250\r-\r-\r-\r-\r-\r-\r-\r-\018\146\r-\019\250\r-\"\230\r-\r-\r-\r-\r-\r-\r-\r-\001\210\r-\r-\020\006\r-\020\018\r-\r-\r-\028\254\007\217\r-\r-\r-\r-\r-\r-\r-$#\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\0196\r-\r-\015\241\r-\r-\011\197\017\182\006&\017\174\r-\r-\r-\r-\r-\"\130\r-\r-\r-\018\222\r-\012r\019:\r\150\r-\006.\r-\r-\028\250\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\r-\018\226\r-\r-\r-\r-\r-\r\025\r\025\025\226\000\242\029\002\r\025\r\025\r\025\r\025\004\178\r\025\r\025\r\025\r\025\r\242\r\025\r\025\"\234\r\025\r\025\r\025\019\014\r\025\r\025\r\025\r\025\025\234\r\025\n\021\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\019\002\r\025\006\014\r\025\019\018\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\n\029\r\025\r\025\011\201\r\025\019\130\r\025\r\025\r\025\r\246\014\006\r\025\r\025\r\025\r\025\r\025\r\025\r\025\bQ\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025$7\r\025\r\025#\235\r\025\r\025!\230\019\246\bQ\006\014\r\025\r\025\r\025\r\025\r\025#\207\r\025\r\025\r\025\019^\r\025\r\025\003\194\r\025\r\025\011\134\r\025\r\025 \002\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\r\025\019b\001\138\r\025\r\025\r\025\r\025\004\137\004\137\020\206\020\222\006b\004\137\004\137\004\137\004\137\011\201\004\137\004\137\004\137\004\137\002\026\004\137\004\137 \n\004\137\004\137\004\137\006\150\004\137\004\137\004\137\004\137\006z\004\137\007\185\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\003\194\004\137\012v\004\137\029\194\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\021\018\004\137\004\137\020\174\004\137\020\186\004\137\004\137\004\137\"\174\018\142\004\137\004\137\004\137\004\137\004\137\004\137\004\137\b\166\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\019\214\012j\r\142\018\182\004\137\004\137\0196\017\n\b\170#&\004\137\004\137\004\137\004\137\004\137\021\026\004\137\004\137\004\137\018\222\004\137\012r#{\r\150\004\137\019\226\004\137\004\137\020\014\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\004\137\019\238\004\137\004\137\004\137\004\137\004\137\012\141\012\141\026.\019^\000\242\012\141\012\141\012\141\012\141#_\012\141\012\141\012\141\012\141#O\012\141\012\141\019\014\012\141\012\141\012\141\018\018\012\141\012\141\012\141\012\141\020\026\012\141\"\178\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\020\002\012\141\021.\012\141\020\170\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\021B\012\141\012\141\005\254\012\141\018\026\012\141\012\141\012\141\0212\018b\012\141\012\141\012\141\012\141\012\141\012\141\012\141\bY\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\018:\012\141\012\141\020\194\012\141\012\141\021V\006V\bY\0266\012\141\012\141\012\141\012\141\012\141\019\194\012\141\012\141\012\141\011\134\012\141\012\141\020\182\012\141\012\141#2\012\141\012\141\021Z\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\012\141\007\002\001\154\012\141\012\141\012\141\012\141\012\161\012\161 B\021\250\021f\012\161\012\161\012\161\012\161!\238\012\161\012\161\012\161\012\161\021\162\012\161\012\161\007\006\012\161\012\161\012\161\002b\012\161\012\161\012\161\012\161\021\198\012\161\003\194\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\021\166\012\161\021F\012\161\002f\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\001\210\012\161\012\161\000\242\012\161\019>\012\161\012\161\012\161!\198\021\210\012\161\012\161\012\161\012\161\012\161\012\161\012\161\023^\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\003\222\012\161\012\161\021\214\012\161\012\161\"&\023r\021j\002A\012\161\012\161\012\161\012\161\012\161!\158\012\161\012\161\012\161 F\012\161\012\161\025~\012\161\012\161\b\014\012\161\012\161#\003\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\012\161\001\210\021\202\012\161\012\161\012\161\012\161\012\157\012\157\000\242\022\002\022\014\012\157\012\157\012\157\012\157\n\238\012\157\012\157\012\157\012\157\"\243\012\157\012\157 \134\012\157\012\157\012\157\000\242\012\157\012\157\012\157\012\157\022\018\012\157!\202\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\023\226\012\157\002\138\012\157\004e\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\001\210\012\157\012\157\000\242\012\157\018B\012\157\012\157\012\157\007\142\007\162\012\157\012\157\012\157\012\157\012\157\012\157\012\157\004\178\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\b\246\012\157\012\157\006\161\012\157\012\157\014\014\022\006 \254!\014\012\157\012\157\012\157\012\157\012\157\003\006\012\157\012\157\012\157\030f\012\157\012\157\b\250\012\157\012\157\006\018\012\157\012\157\025\238\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157\012\157 \194 \210\012\157\012\157\012\157\012\157\001\153\001\153\007\254\b\018\014\018\001\153\001\153\001\153\001\153\004\178\001\153\001\153\001\153\001\153\020>\001\153\001\153\023\210\001\153\001\153\001\153\024&\001\153\001\153\001\153\001\153 \006\001\153\n!\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\015\229\001\153\001f\001\153\020^\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\031\138\001\153\001\153\001~\001\153\001\142\001\153\001\153\001\153\n\222\n\242\001\153\001\153\001\153\001\153\001\153\001\153\001\153\030j\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\t\005\001\153\001\153\020\210\001\153\001\153\024>\n\182\br\b\134\001\153\001\153\001\153\001\153\001\153\020\218\001\153\001\153\001\153\026\138\001\153\001\153\030&\011\198\001\153\b\130\001\153\001\153\029\154\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\030*\001\153\001\153\001\153\001\153\001\153\012\153\012\153\029\006\000\242\006\170\012\153\012\153\012\153\012\153\025\166\012\153\012\153\012\153\012\153\t2\012\153\012\153\025\186\012\153\012\153\012\153\000\242\012\153\012\153\012\153\012\153\011F\012\153\007\201\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\003\194\012\153\031\142\012\153\"\154\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\n\025\012\153\012\153\000\242\012\153\019f\012\153\012\153\012\153\003\142\tJ\012\153\012\153\012\153\012\153\012\153\012\153\012\153\026\142\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\"b\012\153\012\153\011n\012\153\012\153\nr\n\134\n2\0042\012\153\012\153\012\153\012\153\012\153\b\217\012\153\012\153\012\153\":\012\153\012\153\021\130\012\153\012\153\n\022\012\153\012\153\025\194\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\tV\tj\012\153\012\153\012\153\012\153\012\129\012\129\029\166\t6\000\242\012\129\012\129\012\129\012\129\t\142\012\129\012\129\012\129\012\129!\254\012\129\012\129\029\250\012\129\012\129\012\129\000\242\012\129\012\129\012\129\012\129\026Z\012\129\007\197\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\r6\012\129\007\158\012\129\006\170\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\006\170\012\129\012\129\000\242\012\129\018\150\012\129\012\129\012\129\n\"\n6\012\129\012\129\012\129\012\129\012\129\012\129\012\129\004\178\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129!N\012\129\012\129\000\242\012\129\012\129\003* \242\n\130\0266\012\129\012\129\012\129\012\129\012\129!2\012\129\012\129\012\129\022v\012\129\012\129\007\134\012\129\012\129\tf\012\129\012\129\007\146\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\n\006\n\154\012\129\012\129\012\129\012\129\012\137\012\137\011\014\0116\000\242\012\137\012\137\012\137\012\137\004\178\012\137\012\137\012\137\012\137\007\150\012\137\012\137\011\030\012\137\012\137\012\137\000\242\012\137\012\137\012\137\012\137\025\230\012\137\004\178\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137!\n\012\137\012\250\012\137 \014\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\n%\012\137\012\137\004\178\012\137\018\190\012\137\012\137\012\137\r^\r\130\012\137\012\137\012\137\012\137\012\137\012\137\012\137\004\178\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137!\002\012\137\012\137\000\242\012\137\012\137\"\030\r\026\004\194\007\189\012\137\012\137\012\137\012\137\012\137 \246\012\137\012\137\012\137\004\246\012\137\012\137\007\210\012\137\012\137\012\242\012\137\012\137 \206\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\012\137\014R\014b\012\137\012\137\012\137\012\137\012\133\012\133\r\018\000\242\000\242\012\133\012\133\012\133\012\133\005v\012\133\012\133\012\133\012\133\n\226\012\133\012\133\004\186\012\133\012\133\012\133\001\186\012\133\012\133\012\133\012\133\005:\012\133\023z\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\023\174\012\133 \186\012\133\001\190\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\001\222\012\133\012\133\000\242\012\133\018\230\012\133\012\133\012\133\011>\031f\012\133\012\133\012\133\012\133\012\133\012\133\012\133\004\250\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133 \170\012\133\012\133\023\198\012\133\012\133\n\166\n\186\005\130\005\150\012\133\012\133\012\133\012\133\012\133\001\226\012\133\012\133\012\133\005J\012\133\012\133\023\202\012\133\012\133\n\230\012\133\012\133\023\242\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\012\133\b\002\011\165\012\133\012\133\012\133\012\133\012\145\012\145\005R\016\194\016\210\012\145\012\145\012\145\012\145\024\006\012\145\012\145\012\145\012\145\b\006\012\145\012\145\024F\012\145\012\145\012\145\024V\012\145\012\145\012\145\012\145 ^\012\145\bJ\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145 6\012\145\024\230\012\145\bV\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\024\254\012\145\012\145 &\012\145\019\022\012\145\012\145\012\145 \022\n\174\012\145\012\145\012\145\012\145\012\145\012\145\012\145\004\250\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\002\210\012\145\012\145\bv\012\145\012\145\bz\n\170\002\214\025\142\012\145\012\145\012\145\012\145\012\145\025\146\012\145\012\145\012\145\004\250\012\145\012\145\031\238\012\145\012\145\031\222\012\145\012\145\025\202\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\012\145\031\210\031\202\012\145\012\145\012\145\012\145\012\149\012\149\025\246\025\250\026\018\012\149\012\149\012\149\012\149\nz\012\149\012\149\012\149\012\149\031b\012\149\012\149\b\218\012\149\012\149\012\149\nv\012\149\012\149\012\149\012\149\031J\012\149\026\190\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\026\194\012\149\026\230\012\149\026\234\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\026\250\012\149\012\149\027\n\012\149\018j\012\149\012\149\012\149\027\022\027J\012\149\012\149\012\149\012\149\012\149\012\149\012\149\027N\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\027\158\012\149\012\149\027\198\012\149\012\149\027\202\n&\027\218\027\226\012\149\012\149\012\149\012\149\012\149\tZ\012\149\012\149\012\149\t^\012\149\012\149\0282\012\149\012\149\0306\012\149\012\149\028R\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\012\149\n\014\n\n\012\149\012\149\012\149\012\149\004\133\004\133\003.\028\146\028\190\004\133\004\133\004\133\004\133\028\206\004\133\004\133\004\133\004\133\028\226\004\133\004\133\t\170\004\133\004\133\004\133\029\014\004\133\004\133\004\133\004\133\029\018\004\133\029\030\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\029B\004\133\014*\004\133\n\026\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\029.\004\133\004\133\0182\004\133\018Z\004\133\004\133\004\133\030\142\030\182\004\133\004\133\004\133\004\133\004\133\004\133\004\133\031R\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\n\158\012j\r\142\003\146\004\133\004\133 \026\003\150\n\214 \182\004\133\004\133\004\133\004\133\004\133 \198\004\133\004\133\004\133!B\004\133\012r\0112\r\150\004\133\n*\004\133\004\133!\178\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\011\018\004\133\004\133\004\133\004\133\004\133\012\253\012\253!\218!\242\tN\012\253\002\238\002\226\012\253\"*\002\150\012\253\012\253\012\253\"\190\003f\012\253\"\210\012\253\012\253\012\253\"\222\012\253\012\253\012\253\001\214#\022\012\253$\131\003r\012\253\012\253\012\253\012\253\012\253\012\253\012\253\001n\003v\012\202\t\186\031B\012\253\012\253\012\253\012\253\012\253\t\214\t\218\012\253\012\226\t\234\001\194\001v\012\253\rB\012\253\012\253\003^\rb\r~\t\242\012\253\012\253\012\253\011~\011\130\011\142\r\146\012\253\007*\012\253\012\253\012\253\012\253\012\253\012\253\012\253\012\253\012\253\001\134\012\253\012\253\004\158\012\253\012\253\r\250\014\002\001\150\004\198\0076\007:\012\253\012\253\012\253\014V\012\253\012\253\012\253\014^\012\253\012\253\025\206\012\253\012\253\004\222\012\253\012\253\005B\012\253\012\253\012\253\012\253\012\253\012\253\007>\011\150\012\253\012\253\012\253\011\174\003\242\001\202\005z\012\253\012\253\012\253\012\253\002Q\002Q\005\134\005\138\016\198\002Q\002\238\002\226\002Q\016\206\002\150\002Q\r\238\002Q\000\000\003f\002Q\000\000\002Q\002Q\002Q\000\000\002Q\002Q\002Q\001\214\000\000\014\n\000\000\003r\002Q\002Q\002Q\002Q\002Q\014\022\002Q\000\000\003v\000\000\t\186\000\000\002Q\002Q\002Q\002Q\002Q\t\214\t\218\002Q\000\000\t\234\001\194\000\000\002Q\000\000\002Q\002Q\003^\000\000\000\000\t\242\002Q\002Q\002Q\011~\011\130\011\142\000\000\014\030\007*\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\000\000\012j\r\142\000\000\002Q\002Q\000\000\000\000\000\000\000\000\0076\007:\002Q\002Q\002Q\000\000\002Q\002Q\002Q\000\000\002Q\014&\000\000\018\130\002Q\000\000\002Q\002Q\000\000\002Q\002Q\002Q\002Q\002Q\002Q\007>\011\150\002Q\002Q\002Q\011\174\003\242\000\000\000\000\002Q\002Q\002Q\002Q\r\001\r\001\000\000\000\000\000\000\r\001\002\238\002\226\r\001\000\000\002\150\r\001\r\001\r\001\000\000\003f\r\001\000\000\r\001\r\001\r\001\000\000\r\001\r\001\r\001\001\214\000\000\r\001\000\000\003r\r\001\r\001\r\001\r\001\r\001\r\001\r\001\000\000\003v\000\000\t\186\000\000\r\001\r\001\r\001\r\001\r\001\t\214\t\218\r\001\000\000\t\234\001\194\000\000\r\001\011\157\r\001\r\001\003^\000\000\000\000\t\242\r\001\r\001\r\001\011~\011\130\011\142\000\000\r\001\007*\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\000\000\r\001\r\001\000\000\r\001\r\001\000\000\000\000\000\000\000\000\0076\007:\r\001\r\001\r\001\000\000\r\001\r\001\r\001\000\242\r\001\r\001\000\000\r\001\r\001\000\000\r\001\r\001\000\000\r\001\r\001\r\001\r\001\r\001\r\001\007>\011\150\r\001\r\001\r\001\011\174\003\242\000\000\000\000\r\001\r\001\r\001\r\001\005\209\005\250\005\209\000\000\005\209\005\209\005\209\005\209\005\209\005\209\005\209\b\233\005\209\000\000\005\209\005\209\011\157\005\209\005\209\005\209\002\r\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\b\233\005\209\005\209\000\000\b\233\005\209\005\209\005\006\005\209\005\209\005\209\005\209\005\209\006j\005\209\005\209\005\209\005\209\005\209\000\000\005\209\005\209\005\209\005\209\005\209\000\000\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\000\242\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\001j\004Q\005\209\004Q\004Q\005\209\005\209\005\209\000\000\005\209\000\000\000\000\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\005\209\022\218\b\233\005\209\005\209\000\000\005\209\000\000\000\000\005\209\003R\005\198\011\138\000\000\005\209\000\000\000\000\022B\000\000\031\190\000\000\005\209\005\209\005\209\003Z\022\190\005\209\005\209\005\209\005\209\002\153\002\153\005\209\005\022\000\000\002\153\002\238\002\226\002\153\031\194\002\150\002\153\r\238\002\153\000\000\003f\002\153\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\001\214\000\000\014\n\000\000\003r\002\153\002\153\002\153\002\153\002\153\014\022\002\153\000\000\003v\b\226\t\186\000\000\002\153\002\153\002\153\002\153\002\153\t\214\t\218\002\153\000\000\t\234\001\194\000\000\002\153\000\000\002\153\002\153\003^\b\230\000\000\t\242\002\153\002\153\002\153\011~\011\130\011\142\000\000\014\030\007*\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\t\174\002\153\002\153\000\000\000\000\000\000\000\000\0076\007:\002\153\002\153\002\153\000\000\002\153\002\153\002\153\0032\002\153\000\000\rf\000\242\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\002\153\002\153\002\153\007>\011\150\002\153\002\153\002\153\011\174\003\242\000\000\000\000\002\153\002\153\002\153\002\153\000\129\000\000\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\129\000\000\000\129\000\129\000\000\000\129\000\129\004R\bf\000\129\000\129\b&\000\129\000\129\000\129\000\129\000\000\000\129\b\174\000\129\000\129\000\000\b\186\000\129\000\129\011\221\000\129\000\129\000\129\000\000\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\129\000\129\000\000\021\150\000\129\000\129\000\000\011\221\000\129\000\129\000\242\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\005\238\007i\000\129\000\000\000\000\000\129\000\000\000\129\005\222\000\129\002!\002!\022\150\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\129\002!\000\129\t\253\000\000\002\226\000\226\t\253\002\150\000\000\000\129\004\210\000\000\000\n\000\000\000\000\000\129\000\129\000\129\000\129\007i\000\000\000\129\000\129\000\129\000\129\002!\022\198\002!\000\000\002!\002!\002!\002!\002!\002!\002!\024\206\002!\007i\002!\002!\000\000\002!\002!\000\000\022\206\002!\t\253\024\026\002!\002!\002!\002!\000\000\002!\000\000\002!\002!\000\n\000\000\002!\002!\023\178\002!\002!\002!\000\000\002!\t\253\002!\002!\002!\002!\002!\000\000\002!\002!\002!\002!\002!\000\000\000\000\002!\002!\001\206\001\210\002!\002!\007:\002!\002!\002!\002!\002!\002!\002!\002!\002!\000\000\024~\002!\000\000\0069\001\214\002\154\002!\004\154\002!\b\201\000\000\000\000\002!\002!\002!\002!\002!\002!\002!\002!\000\000\000\000\t\022\002!\000\000\002!\0069\000\000\t\030\r\177\004\n\003\186\b\201\002!\000\000\003:\000\000\003^\003\154\003\166\002!\002!\002!\000\000\003\178\002!\002!\002!\002!\003y\003y\000\000\002\018\005\209\003y\002\150\000\000\003y\000\000\r\177\003y\003\182\003y\000\000\000\000\014\162\000\000\003y\003y\003y\000\000\003y\003y\003y\r\177\000\000\000\000\r\177\017~\015\n\015R\015j\015\"\015\130\r\177\003y\023\162\000\000\r\177\002\150\005\209\003y\003y\015\154\015\178\003y#\014\001\226\003y\000\000\000\000\005\209\000\000\003y\000\000\015\202\003y\000\000\000\000\000\000\023\178\003y\003y\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\014\186\015:\015\226\015\250\016*\003y\003y\000\000\023\166\003y\000\000\003y\016B\000\000\007:\000\000\000\000\000\000\000\000\003y\003y\016Z\023\178\003y\003y\003y\000\000\003y\000\000\012\n\000\000\003y\000\000\003y\003y\000\000\016\186\003y\016\242\016\018\003y\003y\004E\000\000\003y\016r\003y\t\154\007:\012\014\000\000\003y\003y\016\138\016\162\003!\003!\000\000\000\000\005\209\003!\004E\000\000\003!\000\000\t\161\003!\000\000\003!\000\000\000\000\014\162\000\000\003!\003!\003!!V\003!\003!\003!\011\254\000\000\000\000\005\209\004E\015\n\015R\015j\015\"\015\130\000\000\003!\006\209\000\242\000\000\t\161\000\000\003!\003!\015\154\015\178\003!\000\000\000\000\003!\004E\000\000\005\209\000\000\003!\t\161\015\202\003!\t\161\012V\000\000\000\000\003!\003!\000\242\t\161\000\000\000\000\000\000\t\161\000\000\003!\003!\014\186\015:\015\226\015\250\016*\003!\003!\000\000\000\000\003!\000\000\003!\016B\000\000\012\018\000\000\006\209\000\000\000\000\003!\003!\016Z\000\000\003!\003!\003!\002\014\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\003!\003!\003!\016\018\003!\003!\000\000\000\000\003!\016r\003!\028\174\000\000\000\000\000\000\003!\003!\016\138\016\162\n\209\n\209\000\000\000\000\000\000\n\209\002\238\002\226\n\209\000\000\002\150\n\209\000\000\n\209\000\000\003f\n\209\000\000\n\209\n\209\n\209\000\000\n\209\n\209\n\209\001\214\000\000\000\000\000\000\003r\n\209\n\209\n\209\n\209\n\209\000\000\n\209\000\000\003v\000\000\t\186\000\000\n\209\n\209\n\209\n\209\n\209\t\214\t\218\n\209\000\000\t\234\011\146\000\000\n\209\000\000\n\209\n\209\003^\000\000\000\000\t\242\n\209\n\209\n\209\011~\011\130\011\142\000\000\000\000\007*\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\000\000\012j\r\142\000\000\n\209\n\209\000\000\000\000\000\000\000\000\0076\007:\n\209\n\209\n\209\000\000\n\209\n\209\n\209\000\000\n\209\012r\000\000\r\150\n\209\000\000\n\209\n\209\t\181\n\209\n\209\n\209\n\209\n\209\n\209\007>\011\150\n\209\n\209\n\209\011\174\003\242 f\005\250\n\209\n\209\n\209\n\209\n\129\n\129\002!\002!\024\166\n\129\000\000\006\018\n\129\000\000\t\181\n\129\000\000\n\129 j\000\000\n\129\002!\n\129\n\129\n\129\022&\n\129\n\129\n\129\t\181\000\000\000\000\b&\000\n\n\129\n\129\n\129\n\129\n\129\t\181\n\129\006j\000\000\t\181\000\000\002\005\n\129\n\129\n\129\n\129\n\129\000\000\000\000\n\129\000\000\011\202\001\194\000\000\n\129\000\000\n\129\n\129\000\242\000\000\002!\0216\n\129\n\129\n\129\021J\021^\021n\000\000\000\000\000\000\n\129\n\129\n\129\n\129\n\129\n\129\n\129\n\129\n\129\000\000\012j\r\142\000\000\n\129\n\129\000\000\011\242\000\000\000\000\000\000\000\000\n\129\n\129\n\129\005\222\n\129\n\129\n\129\000\000\n\129\012r\000\000\r\150\n\129\000\000\n\129\n\129\006\201\n\129\n\129\n\129\n\129\n\129\n\129\000\000\000\000\n\129\n\129\n\129\006\201\006\018\000\000\000\000\n\129\n\129\n\129\n\129\002\149\002\149\rV\022*\000\000\002\149\0226\000\000\002\149\000\000\025:\002\149\014~\002\149\000\000\000\000\002\149\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\006\201\000\000\000\000\000\000\025&\002\149\002\149\002\149\002\149\002\149\000\000\002\149\011\202\021\178\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\0216\000\000\002\149\b}\021J\021^\021n\002\149\006\201\002\149\002\149\006\201\000\000\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\b}\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\000\000\012j\r\142\000\000\002\149\002\149 z\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\002\149\012r\000\000\r\150\002\149\000\000\002\149\002\149\011\t\002\149\002\149\002\149\002\149\002\149\002\149\004E\000\000\002\149\002\149\002\149\005\158\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\161\002\161\000\000\000\000\000\000\002\161\004E\006\018\002\161\000\000\011\t\002\161\005\162\002\161\000\000\000\000\002\161\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\nj\000\000\000\000\011\t\004E\002\161\002\161\002\161\002\161\002\161\011\t\002\161\006\209\000\000\011\t\000\000\000\000\002\161\002\161\002\161\002\161\002\161\b\241\000\000\002\161\004E\007r\006\022\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\006\238\002\161\002\161\002\161\b\234\b\241\006\250\000\000\000\000\b\241\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\000\000\012j\r\142\006\214\002\161\002\161\000\000\000\000\000\000\006\209\000\000\005\222\002\161\002\161\002\161\000\000\002\161\002\161\002\161\002\202\002\161\012r\000\000\r\150\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\002\161\002\161\000\000\000\000\000\000\003\214\002\161\002\161\002\161\002\161\002\145\002\145\000\000\b\241\000\000\002\145\025\022\002\226\002\145\000\000\000\000\002\145\000\000\002\145\000\000\000\000\002\145\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\025&\000\000\000\000\rV\000\000\002\145\002\145\002\145\002\145\002\145\000\000\002\145\000\000\014~\0046\003\226\000\000\002\145\002\145\002\145\002\145\002\145\003\154\003\166\002\145\b\137\018\134\006\006\003\178\002\145\000\000\002\145\002\145\000\000\000\000\000\000\000\000\002\145\002\145\002\145\018\174\000\000\018\214\000\000\000\000\b\137\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\012j\r\142\000\000\002\145\002\145\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\002\145\012r\000\000\r\150\002\145\000\000\002\145\002\145\000\000\002\145\002\145\002\145\002\145\002\145\002\145\000\000\000\000\002\145\002\145\002\145\005\170\002\226\000\000\000\000\002\145\002\145\002\145\002\145\n\169\n\169\000\000\000\000\000\000\n\169\000\000\000\000\n\169\000\000\000\000\n\169\005\174\n\169\000\000\000\000\n\169\000\000\n\169\n\169\n\169\000\000\n\169\n\169\n\169\000\000\000\000\000\000\000\000\b\225\n\169\n\169\n\169\n\169\n\169\000\000\n\169\r\154\006\006\000\000\000\000\000\000\n\169\n\169\n\169\n\169\n\169\000\000\b\225\n\169\000\000\019\218\b\225\019\230\n\169\000\000\n\169\n\169\000\000\000\000\000\000\000\000\n\169\n\169\n\169\000\000\000\000\000\000\000\000\000\000\000\000\n\169\n\169\n\169\n\169\n\169\n\169\n\169\n\169\n\169\000\000\012j\r\142\000\000\n\169\n\169\000\000\000\000\000\000\000\000\000\000\000\000\n\169\n\169\n\169\000\000\n\169\n\169\n\169\000\000\n\169\012r\000\000\r\150\n\169\000\000\n\169\n\169\000\000\n\169\n\169\n\169\n\169\n\169\n\169\000\000\000\000\n\169\n\169\n\169\000\000\000\000\000\000\b\225\n\169\n\169\n\169\n\169\n\229\n\229\000\000\000\000\000\000\n\229\000\000\000\000\n\229\000\000\000\000\n\229\000\000\n\229\007\014\000\000\n\229\000\000\n\229\n\229\n\229\000\000\n\229\n\229\n\229\000\000\000\000\000\000\b\253\000\000\n\229\n\229\n\229\n\229\n\229\000\000\n\229\000\000\000\000\000\000\000\000\000\000\n\229\n\229\n\229\n\229\n\229\b\253\000\000\n\229\000\000\b\253\000\000\000\000\n\229\000\000\n\229\n\229\000\000\000\000\000\000\000\000\n\229\n\229\n\229\000\000\000\000\000\000\000\000\000\000\000\000\n\229\n\229\n\229\n\229\n\229\n\229\n\229\n\229\n\229\000\000\012j\r\142\000\000\n\229\n\229\000\000\000\000\000\000\000\000\000\000\000\000\n\229\n\229\n\229\000\000\n\229\n\229\n\229\000\000\n\229\012r\000\000\r\150\n\229\000\000\n\229\n\229\000\000\n\229\n\229\n\229\n\229\n\229\n\229\000\000\000\000\n\229\n\229\n\229\000\000\000\000\007\026\000\000\n\229\n\229\n\229\n\229\002\165\002\165\000\000\000\000\000\000\002\165\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\000\000\000\000\002\165\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\002\165\002\165\002\165\002\165\000\000\012j\r\142\000\000\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\002\165\012r\000\000\r\150\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\n\189\n\189\000\000\000\000\000\000\n\189\000\000\000\000\n\189\000\000\000\000\n\189\000\000\n\189\000\000\000\000\n\189\000\000\n\189\n\189\n\189\000\000\n\189\n\189\n\189\000\000\000\000\000\000\000\000\000\000\n\189\n\189\n\189\n\189\n\189\000\000\n\189\000\000\000\000\000\000\000\000\000\000\n\189\n\189\n\189\n\189\n\189\000\000\000\000\n\189\000\000\000\000\000\000\000\000\n\189\000\000\n\189\n\189\000\000\000\000\000\000\000\000\n\189\n\189\n\189\000\000\000\000\000\000\000\000\000\000\000\000\n\189\n\189\n\189\n\189\n\189\n\189\n\189\n\189\n\189\000\000\012j\r\142\000\000\n\189\n\189\000\000\000\000\000\000\000\000\000\000\000\000\n\189\n\189\n\189\000\000\n\189\n\189\n\189\000\000\n\189\012r\000\000\r\150\n\189\000\000\n\189\n\189\000\000\n\189\n\189\n\189\n\189\n\189\n\189\000\000\000\000\n\189\n\189\n\189\000\000\000\000\000\000\000\000\n\189\n\189\n\189\n\189\n\149\n\149\000\000\000\000\000\000\n\149\000\000\000\000\n\149\000\000\000\000\n\149\000\000\n\149\000\000\000\000\n\149\000\000\n\149\n\149\n\149\000\000\n\149\n\149\n\149\000\000\000\000\000\000\000\000\000\000\n\149\n\149\n\149\n\149\n\149\000\000\n\149\000\000\000\000\000\000\000\000\000\000\n\149\n\149\n\149\n\149\n\149\000\000\000\000\n\149\000\000\000\000\000\000\000\000\n\149\000\000\n\149\n\149\000\000\000\000\000\000\000\000\n\149\n\149\n\149\000\000\000\000\000\000\000\000\000\000\000\000\n\149\n\149\n\149\n\149\n\149\n\149\n\149\n\149\n\149\000\000\012j\r\142\000\000\n\149\n\149\000\000\000\000\000\000\000\000\000\000\000\000\n\149\n\149\n\149\000\000\n\149\n\149\n\149\000\000\n\149\012r\000\000\r\150\n\149\000\000\n\149\n\149\000\000\n\149\n\149\n\149\n\149\n\149\n\149\000\000\000\000\n\149\n\149\n\149\000\000\000\000\000\000\000\000\n\149\n\149\n\149\n\149\002\177\002\177\000\000\000\000\000\000\002\177\000\000\005\209\002\177\000\000\000\000\002\177\000\000\002\177\000\000\000\000\014\162\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\002\177\000\000\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\015\154\015\178\002\177\000\000\000\000\002\177\000\000\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\014\186\015:\015\226\015\250\002\177\002\177\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\016\018\002\177\002\177\000\000\000\000\002\177\002\177\002\177\026\022\000\000\000\000\000\000\002\177\002\177\002\177\002\177\003\209\003\209\000\000\000\000\000\000\003\209\000\000\005\209\003\209\000\000\000\000\003\209\000\000\003\209\000\000\000\000\014\162\000\000\003\209\014\246\003\209\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\t\r\015\n\015R\015j\015\"\015\130\000\000\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003\209\015\154\015\178\003\209\000\000\t\r\003\209\000\000\000\000\t\r\000\000\003\209\000\000\015\202\003\209\000\000\000\000\000\000\000\000\003\209\003\209\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\014\186\015:\015\226\015\250\016*\003\209\003\209\000\000\000\000\003\209\000\000\003\209\016B\000\000\n\021\000\000\000\000\n\021\000\000\003\209\003\209\016Z\000\000\003\209\003\209\003\209\000\000\003\209\000\000\000\000\000\000\003\209\000\000\003\209\003\209\028\182\016\186\003\209\016\242\016\018\003\209\003\209\000\000\000\000\003\209\016r\003\209\029\142\000\000\000\000\t\r\003\209\003\209\016\138\016\162\001\n\000\000\000\006\n\021\n\021\000\000\002\238\002\226\006Z\003\026\002\150\0032\003&\000\000\rf\003f\001\014\n\021\000\000\000\000\002\170\000\000\005f\000\000\000\000\001\214\000\000\000\000\000\000\t\238\001\022\011\210\011\214\001\"\001&\000\000\000\000\000\000\003v\000\000\t\186\011a\031\150\n\021\012F\012J\000\000\t\214\t\218\000\000\t\222\t\234\t\246\012N\011J\000\000\001>\000\000\003^\b\229\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\n\021\000\000\001B\001F\001J\001N\001R\b\229\011\161\012z\001V\b\229\011a\000\000\001Z\000\000\012\134\012\158\r\158\0076\007:\011]\000\000\001^\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\011a\000\000\000\000\000\000\000\000\000\000\000\000\001\158\bR\000\000\000\000\007>\011\150\000\000\001\162\000\000\021&\003\242\r\178\000\242\001\170\000\000\001\174\001\178\002\193\002\193\000\000\000\000\000\000\002\193\011]\000\000\002\193\000\000\011a\002\193\000\000\002\193\004\154\000\000\002\193\011a\002\193\002\193\002\193\000\000\002\193\002\193\002\193\b\229\000\000\011]\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\011\161\000\000\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\011]\002\193\002\193\002\193\004\154\000\000\000\000\011]\000\000\000\000\002\193\002\193\014\186\002\193\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\002\193\002\193\002\193\002\193\002\193\002\193\015I\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\0031\0031\000\000\000\000\000\000\0031\015I\015I\0031\000\000\015I\0031\000\000\0031\000\000\000\000\014\162\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\0031\000\000\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\015\154\015\178\0031\000\000\000\000\0031\000\000\000\242\000\000\000\000\0031\000\000\015\202\0031\000\000\000\000\000\000\000\000\0031\0031\000\242\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\014\186\015:\015\226\015\250\016*\0031\0031\000\000\015I\0031\000\000\0031\016B\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\016Z\000\000\0031\0031\0031\000\000\0031\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\0031\0031\0031\016\018\0031\0031\000\000\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\0031\0031\016\138\016\162\003}\003}\000\000\000\000\000\000\003}\000\000\000\000\003}\000\000\000\000\003}\000\000\003}\000\000\000\000\003}\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\000\000\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\000\000\000\000\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003}\003}\003}\003}\003}\000\000\000\000\003}\000\000\003}\003}\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\rV\003}\003}\003}\003}\003}\000\000\000\000\003}\003}\014~\000\000\000\000\000\000\000\000\003}\003}\003}\003}\003\173\003\173\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\000\000\000\000\003\173\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\000\000\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\000\000\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\000\000\000\000\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\000\000\003\173\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\rV\003\173\003\173\003\173\003\173\003\173\000\000\000\000\003\173\003\173\014~\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\002y\002y\000\000\000\000\000\000\002y\000\000\000\000\002y\000\000\000\000\002y\000\000\002y\000\000\000\000\014\162\000\000\002y\002y\002y\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\002y\000\000\000\000\000\000\000\000\000\000\002y\002y\015\154\015\178\002y\000\000\000\000\002y\000\000\000\000\000\000\000\000\002y\000\000\015\202\002y\000\000\000\000\000\000\000\000\002y\002y\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002y\002y\014\186\015:\015\226\015\250\016*\002y\002y\000\000\000\000\002y\000\000\002y\016B\000\000\000\000\000\000\000\000\000\000\000\000\002y\002y\016Z\000\000\002y\002y\020\142\000\000\002y\000\000\000\000\000\000\002y\000\000\002y\002y\000\000\016\186\002y\016\242\016\018\002y\002y\000\000\000\000\002y\016r\002y\000\000\000\000\000\000\000\000\002y\002y\016\138\016\162\003\137\003\137\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\000\000\000\000\014\162\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\015\154\015\178\003\137\000\000\000\000\003\137\000\000\000\000\000\000\000\000\003\137\000\000\015\202\003\137\000\000\000\000\000\000\000\000\003\137\003\137\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\014\186\015:\015\226\015\250\016*\003\137\003\137\000\000\000\000\003\137\000\000\003\137\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\016Z\000\000\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\016\186\003\137\016\242\016\018\003\137\003\137\000\000\000\000\003\137\016r\003\137\000\000\000\000\000\000\000\000\003\137\003\137\016\138\016\162\002i\002i\000\000\000\000\000\000\002i\000\000\000\000\002i\000\000\000\000\002i\000\000\002i\000\000\000\000\014\162\000\000\002i\002i\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\015\154\015\178\002i\000\000\000\000\002i\000\000\000\000\000\000\000\000\002i\000\000\015\202\002i\000\000\000\000\000\000\000\000\002i\002i\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\014\186\015:\015\226\015\250\016*\002i\002i\000\000\000\000\002i\000\000\002i\016B\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\016Z\000\000\002i\002i\002i\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\016\186\002i\016\242\016\018\002i\002i\000\000\000\000\002i\016r\002i\000\000\000\000\000\000\000\000\002i\002i\016\138\016\162\003\r\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\003\r\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\000\000\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\rV\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\003\r\014~\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003E\003E\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\000\000\000\000\003E\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\000\000\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\000\000\000\000\003E\000\000\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003E\003E\003E\003E\003E\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\rV\003E\003E\003E\003E\003E\000\000\000\000\003E\003E\014~\000\000\000\000\000\000\000\000\003E\003E\003E\003E\003m\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\003m\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\000\000\000\000\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\003m\003m\003m\003m\003m\003m\000\000\000\000\003m\000\000\003m\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\rV\003m\003m\003m\003m\003m\000\000\000\000\003m\003m\014~\000\000\000\000\000\000\000\000\003m\003m\003m\003m\n\181\n\181\000\000\000\000\000\000\n\181\000\000\000\000\n\181\000\000\000\000\n\181\000\000\n\181\000\000\000\000\014\162\000\000\n\181\n\181\n\181\000\000\n\181\n\181\n\181\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\n\181\000\000\000\000\000\000\000\000\000\000\n\181\n\181\015\154\015\178\n\181\000\000\000\000\n\181\000\000\000\000\000\000\000\000\n\181\000\000\015\202\n\181\000\000\000\000\000\000\000\000\n\181\n\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\181\n\181\014\186\015:\015\226\015\250\016*\n\181\n\181\000\000\000\000\n\181\000\000\n\181\016B\000\000\000\000\000\000\000\000\000\000\000\000\n\181\n\181\016Z\000\000\n\181\n\181\n\181\000\000\n\181\000\000\000\000\000\000\n\181\000\000\n\181\n\181\000\000\n\181\n\181\n\181\016\018\n\181\n\181\000\000\000\000\n\181\016r\n\181\000\000\000\000\000\000\000\000\n\181\n\181\016\138\016\162\0039\0039\000\000\000\000\000\000\0039\000\000\000\000\0039\000\000\000\000\0039\000\000\0039\000\000\000\000\014\162\000\000\0039\0039\0039\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\0039\000\000\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\015\154\015\178\0039\000\000\000\000\0039\000\000\000\000\000\000\000\000\0039\000\000\015\202\0039\000\000\000\000\000\000\000\000\0039\0039\000\242\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\014\186\015:\015\226\015\250\016*\0039\0039\000\000\000\000\0039\000\000\0039\016B\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\016Z\000\000\0039\0039\0039\000\000\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\0039\0039\0039\016\018\0039\0039\000\000\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\0039\0039\016\138\016\162\002\189\002\189\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\002\189\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\rV\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\002\189\014~\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\003\021\003\021\000\000\000\000\000\000\003\021\000\000\000\000\003\021\000\000\000\000\003\021\000\000\003\021\000\000\000\000\003\021\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\000\000\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\rV\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\003\021\014~\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003A\003A\000\000\000\000\000\000\003A\000\000\000\000\003A\000\000\000\000\003A\000\000\003A\000\000\000\000\014\162\000\000\003A\003A\003A\000\000\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003A\000\000\000\000\000\000\000\000\000\000\003A\003A\015\154\015\178\003A\000\000\000\000\003A\000\000\000\000\000\000\000\000\003A\000\000\015\202\003A\000\000\000\000\000\000\000\000\003A\003A\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\014\186\015:\015\226\015\250\016*\003A\003A\000\000\000\000\003A\000\000\003A\016B\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\016Z\000\000\003A\003A\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\016\186\003A\016\242\016\018\003A\003A\000\000\000\000\003A\016r\003A\000\000\000\000\000\000\000\000\003A\003A\016\138\016\162\003\169\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\014\162\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\015\154\015\178\003\169\000\000\000\000\003\169\000\000\000\000\000\000\000\000\003\169\000\000\015\202\003\169\000\000\000\000\000\000\000\000\003\169\003\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\014\186\015:\015\226\015\250\016*\003\169\003\169\000\000\000\000\003\169\000\000\003\169\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\016Z\000\000\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\016\186\003\169\016\242\016\018\003\169\003\169\000\000\000\000\003\169\016r\003\169\000\000\000\000\000\000\000\000\003\169\003\169\016\138\016\162\n}\n}\000\000\000\000\000\000\n}\000\000\000\000\n}\000\000\000\000\n}\000\000\n}\000\000\000\000\n}\000\000\n}\n}\n}\000\000\n}\n}\n}\000\000\000\000\000\000\000\000\000\000\n}\n}\n}\n}\n}\000\000\n}\000\000\000\000\000\000\000\000\000\000\n}\n}\n}\n}\n}\000\000\000\000\n}\000\000\000\000\000\000\000\000\n}\000\000\n}\n}\000\000\000\000\000\000\000\000\n}\n}\n}\000\000\000\000\000\000\000\000\000\000\000\000\n}\n}\n}\n}\n}\n}\n}\n}\n}\000\000\000\000\n}\000\000\n}\n}\000\000\000\000\000\000\000\000\000\000\000\000\n}\n}\n}\000\000\n}\n}\n}\000\000\n}\000\000\000\000\000\000\n}\000\000\n}\n}\000\000\rV\n}\n}\n}\n}\n}\000\000\000\000\n}\n}\014~\000\000\000\000\000\000\000\000\n}\n}\n}\n}\n\161\n\161\000\000\000\000\000\000\n\161\000\000\000\000\n\161\000\000\000\000\n\161\000\000\n\161\000\000\000\000\014\162\000\000\n\161\n\161\n\161\000\000\n\161\n\161\n\161\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\n\161\000\000\000\000\000\000\000\000\000\000\n\161\n\161\015\154\015\178\n\161\000\000\000\000\n\161\000\000\000\000\000\000\000\000\n\161\000\000\015\202\n\161\000\000\000\000\000\000\000\000\n\161\n\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\161\n\161\014\186\015:\015\226\015\250\016*\n\161\n\161\000\000\000\000\n\161\000\000\n\161\016B\000\000\000\000\000\000\000\000\000\000\000\000\n\161\n\161\016Z\000\000\n\161\n\161\n\161\000\000\n\161\000\000\000\000\000\000\n\161\000\000\n\161\n\161\000\000\n\161\n\161\n\161\016\018\n\161\n\161\000\000\000\000\n\161\016r\n\161\000\000\000\000\000\000\000\000\n\161\n\161\016\138\016\162\n\185\n\185\000\000\000\000\000\000\n\185\000\000\000\000\n\185\000\000\000\000\n\185\000\000\n\185\000\000\000\000\n\185\000\000\n\185\n\185\n\185\000\000\n\185\n\185\n\185\000\000\000\000\000\000\000\000\000\000\n\185\n\185\n\185\n\185\n\185\000\000\n\185\000\000\000\000\000\000\000\000\000\000\n\185\n\185\n\185\n\185\n\185\000\000\000\000\n\185\000\000\000\000\000\000\000\000\n\185\000\000\n\185\n\185\000\000\000\000\000\000\000\000\n\185\n\185\n\185\000\000\000\000\000\000\000\000\000\000\000\000\n\185\n\185\n\185\n\185\n\185\n\185\n\185\n\185\n\185\000\000\000\000\n\185\000\000\n\185\n\185\000\000\000\000\000\000\000\000\000\000\000\000\n\185\n\185\n\185\000\000\n\185\n\185\n\185\000\000\n\185\000\000\000\000\000\000\n\185\000\000\n\185\n\185\000\000\rV\n\185\n\185\n\185\n\185\n\185\000\000\000\000\n\185\n\185\014~\000\000\000\000\000\000\000\000\n\185\n\185\n\185\n\185\003\017\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\014\162\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\015\154\015\178\003\017\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\014\186\015:\015\226\015\250\003\017\003\017\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\003\017\003\017\003\017\016\018\003\017\003\017\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\002\213\002\213\000\000\000\000\000\000\002\213\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\000\000\000\000\002\213\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\rV\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\002\213\014~\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002I\002I\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\rV\002I\002I\002I\002I\002I\000\000\000\000\002I\002I\014~\000\000\000\000\000\000\000\000\002I\002I\002I\002I\003\153\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\014\162\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\015\154\015\178\003\153\000\000\000\000\003\153\000\000\000\000\000\000\000\000\003\153\000\000\015\202\003\153\000\000\000\000\000\000\000\000\003\153\003\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\014\186\015:\015\226\015\250\016*\003\153\003\153\000\000\000\000\003\153\000\000\003\153\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\016Z\000\000\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\016\186\003\153\016\242\016\018\003\153\003\153\000\000\000\000\003\153\016r\003\153\000\000\000\000\000\000\000\000\003\153\003\153\016\138\016\162\n\145\n\145\000\000\000\000\000\000\n\145\000\000\000\000\n\145\000\000\000\000\n\145\000\000\n\145\000\000\000\000\n\145\000\000\n\145\n\145\n\145\000\000\n\145\n\145\n\145\000\000\000\000\000\000\000\000\000\000\n\145\n\145\n\145\n\145\n\145\000\000\n\145\000\000\000\000\000\000\000\000\000\000\n\145\n\145\n\145\n\145\n\145\000\000\000\000\n\145\000\000\000\000\000\000\000\000\n\145\000\000\n\145\n\145\000\000\000\000\000\000\000\000\n\145\n\145\n\145\000\000\000\000\000\000\000\000\000\000\000\000\n\145\n\145\n\145\n\145\n\145\n\145\n\145\n\145\n\145\000\000\000\000\n\145\000\000\n\145\n\145\000\000\000\000\000\000\000\000\000\000\000\000\n\145\n\145\n\145\000\000\n\145\n\145\n\145\000\000\n\145\000\000\000\000\000\000\n\145\000\000\n\145\n\145\000\000\rV\n\145\n\145\n\145\n\145\n\145\000\000\000\000\n\145\n\145\014~\000\000\000\000\000\000\000\000\n\145\n\145\n\145\n\145\003%\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\003%\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\000\000\003%\000\000\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\003%\003%\003%\003%\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\rV\003%\003%\003%\003%\003%\000\000\000\000\003%\003%\014~\000\000\000\000\000\000\000\000\003%\003%\003%\003%\002\249\002\249\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\014\186\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002a\002a\000\000\000\000\000\000\002a\000\000\000\000\002a\000\000\000\000\002a\000\000\002a\000\000\000\000\002a\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\002a\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\002a\014~\000\000\000\000\000\000\000\000\002a\002a\002a\002a\003\185\003\185\000\000\000\000\000\000\003\185\000\000\000\000\003\185\000\000\000\000\003\185\000\000\003\185\000\000\000\000\014\162\000\000\003\185\003\185\003\185\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\015\154\015\178\003\185\000\000\000\000\003\185\000\000\000\000\000\000\000\000\003\185\000\000\015\202\003\185\000\000\000\000\000\000\000\000\003\185\003\185\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\014\186\015:\015\226\015\250\016*\003\185\003\185\000\000\000\000\003\185\000\000\003\185\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\016Z\000\000\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\016\186\003\185\016\242\016\018\003\185\003\185\000\000\000\000\003\185\016r\003\185\000\000\000\000\000\000\000\000\003\185\003\185\016\138\016\162\002\237\002\237\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\rV\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\014~\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\253\002\253\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\002\253\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\rV\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\002\253\014~\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\221\002\221\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\002\221\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\rV\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\002\221\014~\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\003-\003-\000\000\000\000\000\000\003-\000\000\000\000\003-\000\000\000\000\003-\000\000\003-\000\000\000\000\003-\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\000\000\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\000\000\000\000\003-\000\000\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\000\000\000\000\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\003-\003-\003-\003-\000\000\000\000\003-\000\000\003-\003-\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\rV\003-\003-\003-\003-\003-\000\000\000\000\003-\003-\014~\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003\181\003\181\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\000\000\000\000\003\181\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\000\000\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\000\000\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\000\000\000\000\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\000\000\003\181\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\rV\003\181\003\181\003\181\003\181\003\181\000\000\000\000\003\181\003\181\014~\000\000\000\000\000\000\000\000\003\181\003\181\003\181\003\181\n\141\n\141\000\000\000\000\000\000\n\141\000\000\000\000\n\141\000\000\000\000\n\141\000\000\n\141\000\000\000\000\014\162\000\000\n\141\n\141\n\141\000\000\n\141\n\141\n\141\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\n\141\000\000\000\000\000\000\000\000\000\000\n\141\n\141\015\154\015\178\n\141\000\000\000\000\n\141\000\000\000\000\000\000\000\000\n\141\000\000\015\202\n\141\000\000\000\000\000\000\000\000\n\141\n\141\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\141\n\141\014\186\015:\015\226\015\250\016*\n\141\n\141\000\000\000\000\n\141\000\000\n\141\016B\000\000\000\000\000\000\000\000\000\000\000\000\n\141\n\141\016Z\000\000\n\141\n\141\n\141\000\000\n\141\000\000\000\000\000\000\n\141\000\000\n\141\n\141\000\000\n\141\n\141\n\141\016\018\n\141\n\141\000\000\000\000\n\141\016r\n\141\000\000\000\000\000\000\000\000\n\141\n\141\016\138\016\162\002\181\002\181\000\000\000\000\000\000\002\181\000\000\000\000\002\181\000\000\000\000\002\181\000\000\002\181\000\000\000\000\002\181\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\rV\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\002\181\014~\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\ny\ny\000\000\000\000\000\000\ny\000\000\000\000\ny\000\000\000\000\ny\000\000\ny\000\000\000\000\014\162\000\000\ny\ny\ny\000\000\ny\ny\ny\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\ny\000\000\000\000\000\000\000\000\000\000\ny\ny\015\154\015\178\ny\000\000\000\000\ny\000\000\000\000\000\000\000\000\ny\000\000\015\202\ny\000\000\000\000\000\000\000\000\ny\ny\000\242\000\000\000\000\000\000\000\000\000\000\000\000\ny\ny\014\186\015:\015\226\015\250\016*\ny\ny\000\000\000\000\ny\000\000\ny\016B\000\000\000\000\000\000\000\000\000\000\000\000\ny\ny\016Z\000\000\ny\ny\ny\000\000\ny\000\000\000\000\000\000\ny\000\000\ny\ny\000\000\ny\ny\ny\016\018\ny\ny\000\000\000\000\ny\016r\ny\000\000\000\000\000\000\000\000\ny\ny\016\138\016\162\003\149\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\003\149\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\000\000\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\000\000\000\000\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\000\000\003\149\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\rV\003\149\003\149\003\149\003\149\003\149\000\000\000\000\003\149\003\149\014~\000\000\000\000\000\000\000\000\003\149\003\149\003\149\003\149\003\129\003\129\000\000\000\000\000\000\003\129\000\000\000\000\003\129\000\000\000\000\003\129\000\000\003\129\000\000\000\000\014\162\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\015\154\015\178\003\129\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\129\000\000\015\202\003\129\000\000\000\000\000\000\000\000\003\129\003\129\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\014\186\015:\015\226\015\250\016*\003\129\003\129\000\000\000\000\003\129\000\000\003\129\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\016Z\000\000\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\016\186\003\129\016\242\016\018\003\129\003\129\000\000\000\000\003\129\016r\003\129\000\000\000\000\000\000\000\000\003\129\003\129\016\138\016\162\002\229\002\229\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\000\000\000\000\002\229\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\rV\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\002\229\014~\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\003\165\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\000\000\000\000\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\000\000\003\165\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\rV\003\165\003\165\003\165\003\165\003\165\000\000\000\000\003\165\003\165\014~\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003=\003=\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\000\000\000\000\003=\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\000\000\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\000\000\000\000\003=\000\000\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003=\003=\003=\003=\003=\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\rV\003=\003=\003=\003=\003=\000\000\000\000\003=\003=\014~\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003)\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\014\162\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\015\154\015\178\003)\000\000\000\000\003)\000\000\000\000\000\000\000\000\003)\000\000\015\202\003)\000\000\000\000\000\000\000\000\003)\003)\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\014\186\015:\015\226\015\250\016*\003)\003)\000\000\000\000\003)\000\000\003)\016B\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\016Z\000\000\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\003)\003)\003)\016\018\003)\003)\000\000\000\000\003)\016r\003)\000\000\000\000\000\000\000\000\003)\003)\016\138\016\162\003e\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\003e\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\003e\003e\003e\003e\003e\003e\000\000\000\000\003e\000\000\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\rV\003e\003e\003e\003e\003e\000\000\000\000\003e\003e\014~\000\000\000\000\000\000\000\000\003e\003e\003e\003e\011\237\011\237\000\000\000\000\000\000\011\237\000\000\000\000\011\237\000\000\000\000\011\237\000\000\011\237\000\000\000\000\011\237\000\000\011\237\011\237\011\237\000\000\011\237\011\237\011\237\000\000\000\000\000\000\000\000\000\000\011\237\011\237\011\237\011\237\011\237\000\000\011\237\000\000\000\000\000\000\000\000\000\000\011\237\011\237\011\237\011\237\011\237\000\000\000\000\011\237\000\000\000\000\000\000\000\000\011\237\000\000\011\237\011\237\000\000\000\000\000\000\000\000\011\237\011\237\011\237\000\000\000\000\000\000\000\000\000\000\000\000\011\237\011\237\011\237\011\237\011\237\011\237\011\237\011\237\011\237\000\000\000\000\011\237\000\000\011\237\011\237\000\000\000\000\000\000\000\000\000\000\000\000\011\237\011\237\011\237\000\000\011\237\011\237\011\237\000\000\011\237\000\000\000\000\000\000\011\237\000\000\011\237\011\237\000\000\rV\011\237\011\237\011\237\011\237\011\237\000\000\000\000\011\237\011\237\014~\000\000\000\000\000\000\000\000\011\237\011\237\011\237\011\237\003\001\003\001\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\014\186\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\189\003\189\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\000\000\000\000\003\189\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\000\000\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\000\000\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\000\000\000\000\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\000\000\003\189\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\rV\003\189\003\189\003\189\003\189\003\189\000\000\000\000\003\189\003\189\014~\000\000\000\000\000\000\000\000\003\189\003\189\003\189\003\189\002\233\002\233\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\000\000\000\000\014\162\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\015\"\002\233\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\014\186\015:\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\002\233\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\217\002\217\000\000\000\000\000\000\002\217\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\000\000\000\000\014\162\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\015\"\002\217\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\014\186\015:\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\002\217\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\003\005\003\005\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\003\005\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\rV\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\003\005\014~\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\n\201\n\201\000\000\000\000\000\000\n\201\000\000\000\000\n\201\000\000\000\000\n\201\000\000\n\201\000\000\000\000\014\162\000\000\n\201\n\201\n\201\000\000\n\201\n\201\n\201\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\n\201\000\000\000\000\000\000\000\000\000\000\n\201\n\201\015\154\015\178\n\201\000\000\000\000\n\201\000\000\000\000\000\000\000\000\n\201\000\000\015\202\n\201\000\000\000\000\000\000\000\000\n\201\n\201\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\201\n\201\014\186\015:\015\226\015\250\016*\n\201\n\201\000\000\000\000\n\201\000\000\n\201\016B\000\000\000\000\000\000\000\000\000\000\000\000\n\201\n\201\016Z\000\000\n\201\n\201\n\201\000\000\n\201\000\000\000\000\000\000\n\201\000\000\n\201\n\201\000\000\n\201\n\201\n\201\016\018\n\201\n\201\000\000\000\000\n\201\016r\n\201\000\000\000\000\000\000\000\000\n\201\n\201\016\138\016\162\003\161\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\014\162\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\015\154\015\178\003\161\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003\161\000\000\015\202\003\161\000\000\000\000\000\000\000\000\003\161\003\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\014\186\015:\015\226\015\250\016*\003\161\003\161\000\000\000\000\003\161\000\000\003\161\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\016Z\000\000\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\016\186\003\161\016\242\016\018\003\161\003\161\000\000\000\000\003\161\016r\003\161\000\000\000\000\000\000\000\000\003\161\003\161\016\138\016\162\n\225\n\225\000\000\000\000\000\000\n\225\000\000\000\000\n\225\000\000\000\000\n\225\000\000\n\225\000\000\000\000\n\225\000\000\n\225\n\225\n\225\000\000\n\225\n\225\n\225\000\000\000\000\000\000\000\000\000\000\n\225\n\225\n\225\n\225\n\225\000\000\n\225\000\000\000\000\000\000\000\000\000\000\n\225\n\225\n\225\n\225\n\225\000\000\000\000\n\225\000\000\000\000\000\000\000\000\n\225\000\000\n\225\n\225\000\000\000\000\000\000\000\000\n\225\n\225\n\225\000\000\000\000\000\000\000\000\000\000\000\000\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\000\000\000\000\n\225\000\000\n\225\n\225\000\000\000\000\000\000\000\000\000\000\000\000\n\225\n\225\n\225\000\000\n\225\n\225\n\225\000\000\n\225\000\000\000\000\000\000\n\225\000\000\n\225\n\225\000\000\rV\n\225\n\225\n\225\n\225\n\225\000\000\000\000\n\225\n\225\014~\000\000\000\000\000\000\000\000\n\225\n\225\n\225\n\225\003\133\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\003\133\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\000\000\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\rV\003\133\003\133\003\133\003\133\003\133\000\000\000\000\003\133\003\133\014~\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\002\169\002\169\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\014\162\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\015\154\015\178\002\169\000\000\000\000\002\169\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\014\186\015:\015\226\015\250\002\169\002\169\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\016\018\002\169\002\169\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002]\002]\000\000\000\000\000\000\002]\000\000\000\000\002]\000\000\000\000\002]\000\000\002]\000\000\000\000\002]\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\000\000\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\000\000\000\000\002]\000\000\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\000\000\000\000\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002]\002]\002]\002]\002]\000\000\000\000\002]\000\000\002]\002]\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\002]\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\002]\002]\002]\002]\002]\002]\000\000\000\000\002]\002]\014~\000\000\000\000\000\000\000\000\002]\002]\002]\002]\002\157\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\002\157\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\014J\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\003\177\003\177\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\000\000\000\000\014\162\000\000\003\177\003\177\003\177\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\015\154\015\178\003\177\000\000\000\000\003\177\000\000\000\000\000\000\000\000\003\177\000\000\015\202\003\177\000\000\000\000\000\000\000\000\003\177\003\177\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\014\186\015:\015\226\015\250\016*\003\177\003\177\000\000\000\000\003\177\000\000\003\177\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\016Z\000\000\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\016\186\003\177\016\242\016\018\003\177\003\177\000\000\000\000\003\177\016r\003\177\000\000\000\000\000\000\000\000\003\177\003\177\016\138\016\162\003u\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\003u\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\000\000\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\000\000\000\000\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\003u\003u\003u\003u\003u\003u\000\000\000\000\003u\000\000\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\rV\003u\003u\003u\003u\003u\000\000\000\000\003u\003u\014~\000\000\000\000\000\000\000\000\003u\003u\003u\003u\002\205\002\205\000\000\000\000\000\000\002\205\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\000\000\000\000\002\205\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\rV\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\002\205\014~\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\003\029\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\003\029\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\000\000\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\rV\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\003\029\014~\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003a\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\014\162\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\015\154\015\178\003a\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\014\186\015:\015\226\003a\003a\003a\003a\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\003a\003a\003a\016\018\003a\003a\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\003a\n\205\n\205\000\000\000\000\000\000\n\205\000\000\000\000\n\205\000\000\000\000\n\205\000\000\n\205\000\000\000\000\n\205\000\000\n\205\n\205\n\205\000\000\n\205\n\205\n\205\000\000\000\000\000\000\000\000\000\000\n\205\n\205\n\205\n\205\n\205\000\000\n\205\000\000\000\000\000\000\000\000\000\000\n\205\n\205\n\205\n\205\n\205\000\000\000\000\n\205\000\000\000\000\000\000\000\000\n\205\000\000\n\205\n\205\000\000\000\000\000\000\000\000\n\205\n\205\n\205\000\000\000\000\000\000\000\000\000\000\000\000\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\000\000\000\000\n\205\000\000\n\205\n\205\000\000\000\000\000\000\000\000\000\000\000\000\n\205\n\205\n\205\000\000\n\205\n\205\n\205\000\000\n\205\000\000\000\000\000\000\n\205\000\000\n\205\n\205\000\000\rV\n\205\n\205\n\205\n\205\n\205\000\000\000\000\n\205\n\205\014~\000\000\000\000\000\000\000\000\n\205\n\205\n\205\n\205\003q\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\014\162\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\015\154\015\178\003q\000\000\000\000\003q\000\000\000\000\000\000\000\000\003q\000\000\015\202\003q\000\000\000\000\000\000\000\000\003q\003q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\014\186\015:\015\226\015\250\016*\003q\003q\000\000\000\000\003q\000\000\003q\016B\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\016Z\000\000\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\016\186\003q\016\242\016\018\003q\003q\000\000\000\000\003q\016r\003q\000\000\000\000\000\000\000\000\003q\003q\016\138\016\162\002u\002u\000\000\000\000\000\000\002u\000\000\000\000\002u\000\000\000\000\002u\000\000\002u\000\000\000\000\002u\000\000\002u\002u\002u\000\000\002u\002u\002u\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\000\000\002u\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\000\000\000\000\002u\000\000\000\000\000\000\000\000\002u\000\000\002u\002u\000\000\000\000\000\000\000\000\002u\002u\002u\000\000\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\002u\002u\002u\002u\002u\002u\000\000\000\000\002u\000\000\002u\002u\000\000\000\000\000\000\000\000\000\000\000\000\002u\002u\002u\000\000\002u\002u\002u\000\000\002u\000\000\000\000\000\000\002u\000\000\002u\002u\000\000\rV\002u\002u\002u\002u\002u\000\000\000\000\002u\002u\014~\000\000\000\000\000\000\000\000\002u\002u\002u\002u\003\145\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\014\162\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\015\154\015\178\003\145\000\000\000\000\003\145\000\000\000\000\000\000\000\000\003\145\000\000\015\202\003\145\000\000\000\000\000\000\000\000\003\145\003\145\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\014\186\015:\015\226\015\250\016*\003\145\003\145\000\000\000\000\003\145\000\000\003\145\016B\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\016Z\000\000\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\016\186\003\145\016\242\016\018\003\145\003\145\000\000\000\000\003\145\016r\003\145\000\000\000\000\000\000\000\000\003\145\003\145\016\138\016\162\002\209\002\209\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\000\000\000\000\014\162\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\015\"\002\209\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\014\186\015:\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\003i\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\014\162\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\015\154\015\178\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\003i\000\000\015\202\003i\000\000\000\000\000\000\000\000\003i\003i\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\014\186\015:\015\226\015\250\016*\003i\003i\000\000\000\000\003i\000\000\003i\016B\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\016Z\000\000\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\016\186\003i\016\242\016\018\003i\003i\000\000\000\000\003i\016r\003i\000\000\000\000\000\000\000\000\003i\003i\016\138\016\162\002m\002m\000\000\000\000\000\000\002m\000\000\000\000\002m\000\000\000\000\002m\000\000\002m\000\000\000\000\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\000\000\000\000\000\000\002m\000\000\002m\002m\000\000\000\000\000\000\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\000\000\002m\002m\002m\000\000\002m\000\000\000\000\000\000\002m\000\000\002m\002m\000\000\rV\002m\002m\002m\002m\002m\000\000\000\000\002m\002m\014~\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002q\002q\000\000\000\000\000\000\002q\000\000\000\000\002q\000\000\000\000\002q\000\000\002q\000\000\000\000\014\162\000\000\002q\002q\002q\000\000\002q\002q\002q\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\002q\000\000\000\000\000\000\000\000\000\000\002q\002q\015\154\015\178\002q\000\000\000\000\002q\000\000\000\000\000\000\000\000\002q\000\000\015\202\002q\000\000\000\000\000\000\000\000\002q\002q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002q\002q\014\186\015:\015\226\015\250\016*\002q\002q\000\000\000\000\002q\000\000\002q\016B\000\000\000\000\000\000\000\000\000\000\000\000\002q\002q\016Z\000\000\002q\002q\002q\000\000\002q\000\000\000\000\000\000\002q\000\000\002q\002q\000\000\016\186\002q\016\242\016\018\002q\002q\000\000\000\000\002q\016r\002q\000\000\000\000\000\000\000\000\002q\002q\016\138\016\162\n\221\n\221\000\000\000\000\000\000\n\221\000\000\000\000\n\221\000\000\000\000\n\221\000\000\n\221\000\000\000\000\014\162\000\000\n\221\n\221\n\221\000\000\n\221\n\221\n\221\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\015\130\000\000\n\221\000\000\000\000\000\000\000\000\000\000\n\221\n\221\015\154\015\178\n\221\000\000\000\000\n\221\000\000\000\000\000\000\000\000\n\221\000\000\015\202\n\221\000\000\000\000\000\000\000\000\n\221\n\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\221\n\221\014\186\015:\015\226\015\250\016*\n\221\n\221\000\000\000\000\n\221\000\000\n\221\016B\000\000\000\000\000\000\000\000\000\000\000\000\n\221\n\221\016Z\000\000\n\221\n\221\n\221\000\000\n\221\000\000\000\000\000\000\n\221\000\000\n\221\n\221\000\000\n\221\n\221\n\221\016\018\n\221\n\221\000\000\000\000\n\221\016r\n\221\000\000\000\000\000\000\000\000\n\221\n\221\016\138\016\162\002\201\002\201\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\002\201\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\014\186\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\241\002\241\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\014\162\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\015\"\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\014\186\015:\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\0035\0035\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\000\000\000\000\0035\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\000\000\0035\000\000\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\0035\0035\0035\0035\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\rV\0035\0035\0035\0035\0035\000\000\000\000\0035\0035\014~\000\000\000\000\000\000\000\000\0035\0035\0035\0035\002\197\002\197\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\002\197\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\rV\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\002\197\014~\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\003\t\003\t\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\014\162\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\015\154\015\178\003\t\000\000\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\014\186\015:\015\226\015\250\003\t\003\t\003\t\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\003\t\003\t\003\t\016\018\003\t\003\t\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\025\003\025\000\000\000\000\000\000\003\025\000\000\000\000\003\025\000\000\000\000\003\025\000\000\003\025\000\000\000\000\014\162\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\015\n\015R\015j\015\"\003\025\000\000\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\015\154\015\178\003\025\000\000\000\000\003\025\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\014\186\015:\015\226\015\250\003\025\003\025\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\003\025\003\025\003\025\016\018\003\025\003\025\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\002}\002}\000\000\000\000\000\000\002}\000\000\000\000\002}\000\000\000\000\002}\000\000\002}\000\000\000\000\002}\000\000\002}\002}\002}\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\000\000\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\000\000\000\000\002}\000\000\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\002}\002}\002}\002}\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\000\000\002}\002}\020r\000\000\002}\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\rV\002}\002}\002}\002}\002}\000\000\000\000\002}\002}\014~\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002\185\002\185\000\000\000\000\000\000\002\185\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\000\000\000\000\014\162\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\015\"\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\014\186\015:\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\225\002\225\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\014\162\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\015\"\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\014\186\015:\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\n\165\n\165\000\000\000\000\000\000\n\165\000\000\000\000\n\165\000\000\000\000\n\165\000\000\n\165\000\000\000\000\n\165\000\000\n\165\n\165\n\165\000\000\n\165\n\165\n\165\000\000\000\000\000\000\000\000\000\000\n\165\n\165\n\165\n\165\n\165\000\000\n\165\000\000\000\000\000\000\000\000\000\000\n\165\n\165\n\165\n\165\n\165\000\000\000\000\n\165\000\000\000\000\000\000\000\000\n\165\000\000\n\165\n\165\000\000\000\000\000\000\000\000\n\165\n\165\n\165\000\000\000\000\000\000\000\000\000\000\000\000\n\165\n\165\n\165\n\165\n\165\n\165\n\165\n\165\n\165\000\000\000\000\n\165\000\000\n\165\n\165\000\000\000\000\000\000\000\000\000\000\000\000\n\165\n\165\n\165\000\000\n\165\n\165\n\165\000\000\n\165\000\000\000\000\000\000\n\165\000\000\n\165\n\165\000\000\rV\n\165\n\165\n\165\n\165\n\165\000\000\000\000\n\165\n\165\014~\000\000\000\000\000\000\000\000\n\165\n\165\n\165\n\165\003\157\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\003\157\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\000\000\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\000\000\000\000\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\000\000\003\157\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\rV\003\157\003\157\003\157\003\157\003\157\000\000\000\000\003\157\003\157\014~\000\000\000\000\000\000\000\000\003\157\003\157\003\157\003\157\002\245\002\245\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\002\245\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\rV\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\002\245\014~\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\003\141\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\000\000\000\000\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\000\000\003\141\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\rV\003\141\003\141\003\141\003\141\003\141\000\000\000\000\003\141\003\141\014~\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\002\173\002\173\000\000\000\000\000\000\002\173\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\000\000\000\000\002\173\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\000\000\006\226\005\250\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\006\230\000\000\002\173\000\000\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\006j\002\173\002\173\002\173\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\002\173\002\173\n\001\000\000\000\000\000\000\n\001\000\242\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\rV\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\002\173\014~\000\000\017\146\000\000\000\000\002\173\002\173\002\173\002\173\001\n\000\000\000\006\n\001\000\000\000\000\002\238\002\226\017\154\003\026\002\150\nN\003&\000\000\000\000\003f\001\014\000\000\017\206\000\000\011\206\000\000\017\218\000\000\n\001\001\214\000\000\000\000\000\000\t\238\001\022\011\210\011\214\001\"\001&\000\000\000\000\000\000\003v\000\000\t\186\000\000\011\218\000\000\012F\012J\000\000\t\214\t\218\000\000\t\222\t\234\t\246\012N\011J\000\000\001>\000\000\003^\000\000\000\000\t\242\004\154\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\012z\001V\000\000\000\000\000\000\001Z\000\000\012\134\012\158\r\158\0076\007:\000\000\000\000\001^\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\b\214\000\000\000\000\007>\011\150\b^\001\162\000\000\021&\003\242\r\178\000\000\001\170\000\000\001\174\001\178\000\145\nA\000\000\000\000\000\000\000\145\002\238\002\226\000\145\bb\002\150\000\000\r\238\000\000\000\000\003f\000\000\000\000\000\145\000\000\000\145\000\000\000\145\000\000\000\145\001\214\000\000\014\n\000\000\003r\000\000\000\000\005\154\000\000\000\000\014\022\000\145\000\000\003v\000\000\t\186\000\000\000\145\000\000\000\000\005\166\000\145\t\214\t\218\000\000\000\000\t\234\001\194\000\242\000\145\000\000\000\000\000\145\003^\000\000\000\000\t\242\000\145\000\145\000\145\011~\011\130\011\142\000\000\014\030\007*\000\145\000\145\000\000\000\000\000\000\000\000\000\000\000\145\000\145\000\000\000\000\000\145\0172\000\000\000\000\000\000\000\000\000\000\000\000\0076\007:\000\145\000\145\000\000\000\000\000\145\000\145\bf\000\000\000\000\b&\b\154\000\000\000\000\000\000\000\000\000\145\b\174\000\000\000\000\000\000\b\186\000\145\000\145\007>\011\150\000\000\000\000\000\000\011\174\003\242\005\253\000\145\000\006\000\145\000\000\000\250\002\238\002\226\002\242\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\003j\000\000\000\000\000\000\005\253\000\000\003n\001\214\000\000\023\"\001\210\003r\000\000\t\178\t\182\000\000\000\000\000\000\011Z\000\000\003v\000\000\t\186\000\000\022\146\000\000\t\206\t\210\001\214\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\023\026\003^\025\150\000\000\t\242\0232\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\003\186\000\000\026\014\000\000\000\000\023:\003^\012z\000\000\000\000\000\000\000\000\015A\026&\012\134\012\158\r\158\0076\007:\023N\023\150\000\000\000\000\005\253\005\253\003R\003V\000\000\000\000\000\000\004\022\015A\015A\002\022\011u\015A\002\030\000\000\000\000\003Z\024r\028~\007>\011\150\001\214\000\000\000\000\011\174\003\242\r\178\025\026\000\000\000\006\000\000\000\000\000\250\002\238\002\226\002\242\003\026\002\150\002\206\003&\000\000\000\000\003f\000\000\000\000\006\029\000\000\003N\001\226\000\000\000\000\003n\001\214\000\242\003^\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\011Z\000\000\003v\000\000\t\186\000\000\022\146\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\005\214\015A\023\026\003^\000\000\000\000\t\242\0232\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\011u\rr\000\000\000\000\000\000\000\000\000\000\023:\000\000\012z\011\169#\246\000\000\000\000\000\000\000\000\012\134\012\158\r\158\0076\007:\023N\023\150\000\000\000\249$\023\021\190\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\000\012\026\005\250\000\000\000\000\000\000\000\000\000\000\028~\007>\011\150\000\000\000\169\000\249\011\174\003\242\r\178\000\169\002\238\002\226\000\169\012\030\002\150\000\000\r\238\000\000\000\000\003f\000\000\000\000\000\169\000\000\000\169\000\000\000\169\000\249\000\169\001\214\000\000\014\n\025\158\003r\000\000\000\000\006j\000\000\000\249\014\022\000\169\000\000\003v\000\249\t\186\000\000\000\169\000\000\000\000\000\000\000\169\t\214\t\218\000\249\000\000\t\234\001\194\000\242\000\169\000\000\000\000\000\169\003^\000\000\000\000\t\242\000\169\000\169\000\169\011~\011\130\011\142\000\000\014\030\007*\000\169\000\169\000\000\000\249\000\000\000\000\000\000\000\169\000\169\000\000\000\000\000\169\005\t\000\249\000\000\000\000\000\000\000\000\000\000\0076\007:\000\169\000\169\000\000\000\000\000\169\000\169\005\t\000\000\000\000\nN\000\000\000\000\000\000\000\000\000\000\000\169\005\t\000\000\000\000\000\000\005\t\000\169\000\169\007>\011\150\000\000\000\000\000\000\011\174\003\242\015E\000\169\000\006\000\169\000\000\000\250\002\238\002\226\002\242\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000$F\015E\015E\000\000\011y\015E\003n\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\011Z\000\000\003v\000\000\t\186\000\000\022\146\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\023\026\003^\000\000\000\000\t\242\0232\000\000\000\242\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023:\000\000\012z\000\000#\246\000\000\000\000\000\000\000\000\012\134\012\158\r\158\0076\007:\023N\023\150\015E\000\000\006%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011y\000\000\000\000\000\000\000\000\028~\007>\011\150\001\n\000\000\000\000\011\174\003\242\r\178\003\134\002\226\b:\000\000\002\150\000\000\003\138\000\000\000\000\003f\001\014\000\000\000\000\000\000\002\170\000\000\000\000\000\000\000\000\001\214\000\000\011\181\000\000\001\018\001\022\001\026\005\182\001\"\001&\000\000\000\000\000\000\000\241\000\000\000\000\000\000\005\186\000\241\0012\006\234\014>\011\181\000\000\011\181\011\181\005\178\001\194\001:\000\000\000\000\001>\000\000\003^\000\000\000\000\006\238\000\241\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\007.\000\000\000\241\001Z\000\000\000\000\000\000\003\130\0076\007:\000\000\007\186\001^\000\241\000\000\000\000\000\000\007\198\000\241\001b\000\000\000\000\000\000\b^\000\000\000\000\000\000\000\241\000\241\001\158\bR\000\000\000\000\007>\000\000\000\000\001\162\000\000\001\166\003\242\001\n\000\000\001\170\bb\001\174\001\178\003\134\002\226\012\218\000\000\002\150\000\000\003\138\000\241\rV\003f\001\014\000\000\000\000\000\000\002\170\000\000\011\181\000\241\014~\001\214\000\000\000\000\000\000\001\018\001\022\001\026\005\182\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\186\000\000\0012\006\234\000\000\000\242\000\000\000\000\000\000\005\178\001\194\001:\000\000\000\000\001>\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\007.\000\000\000\000\001Z\000\000\000\000\000\000\000\000\0076\007:\bf\007\186\001^\b&\012\234\000\000\000\000\007\198\022:\001b\b\174\000\000\000\000\000\000\b\186\002\018\000\000\000\000\000\000\001\158\bR\000\000\002\022\007>\000\000\002\030\001\162\000\000\001\166\003\242\000\000\000\000\001\170\001\214\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\002\206\000\000\000>\000\000\000\000\000\000\000B\000\000\000\000\003N\001\226\000\000\000\000\000F\000\000\000\000\003^\000\000\000\000\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000\000\000\000\000\000\000n\000\000\000r\000\000\000v\000\000\003\134\002\226\000\000\005\214\002\150\000\000\n\218\000\000\000\000\003f\000\000\000\000\000z\000\000\000\000\000~\000\130\000\000\000\000\001\214\000\000\000\000\000\134\000\138\000\142\000\000\005\154\000\000\000\000\b^\000\146\000\150\000\154\000\158\000\000\000\162\000\166\000\170\000\000\005\166\000\000\000\174\000\178\000\182\000\186\005\178\001\194\000\000\000\190\bb\000\194\000\198\003^\000\000\000\000\006\238\000\000\000\000\000\202\006\242\000\206\006\250\007\030\n\246\007*\005Y\000\210\000\214\000\000\000\218\005Y\003\134\002\226\005Y\006\021\002\150\007.\011\n\000\000\t\150\003f\000\000\000\000\005Y\0076\007:\000\000\005Y\000\000\005Y\001\214\000\000\011:\000\242\000\000\000\000\n\254\005\154\003n\000\000\012\170\005Y\000\000\000\000\000\000\000\000\000\000\005Y\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\012\214\001\194\000\000\005Y\028\170\000\000\005Y\003^\000\000\000\000\006\238\005Y\005Y\r\173\006\242\023\026\006\250\000\000\012\254\007*\0232\000\000\bf\000\000\000\000\b&\r\n\005Y\005Y\029N\029^\007.\b\174\000\000\000\000\000\000\b\186\000\000\000\000\0076\007:\005Y\005Y\017\022\000\000\005Y\005Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\021\000\000\000\000\r\173\0032\000\000\r\173\017\030\005Y\007>\030R\000\000\000\000\r\173\011\177\003\242\000\006\r\173\000\000\005Y\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\011\177\000\000\011\177\011\177\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\016\021\016\021\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\016\021\016\021\016\021\006*\000\000\000\000\012z\000\000\000\000\000\000\016\021\000\000\000\000\014.\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\021\016\021\000\000\000\000\000\000\016\021\000\000\016\021\016\021\016\021\000\000\000\000\000\000\000\000\016\021\007>\011\150\011\177\000\000\000\000\011\174\003\242\r\178\011\185\000\000\000\006\000\000\000\000\000\000\002\238\002\226\016\021\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\011\185\000\000\011\185\011\185\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\0036\t\222\t\234\t\246\t\254\011J\001\206\001\210\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\001\214\002\154\001\234\000\000\000\000\000\000\012z\000\000\000\000\000\000\001\246\000\000\000\000\014.\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\174\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\000\000\022\210\000\000\000\000\003\178\007>\011\150\011\185\002\018\000\000\011\174\003\242\r\178\001\153\000\000\002\022\001\153\000\000\002\030\001\153\001\153\003\182\000\000\001\153\000\000\001\153\001\214\000\000\001\153\000\000\000\000\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\001\153\000\000\000\000\002\206\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\003N\001\226\000\000\000\000\001\153\000\000\001\153\003^\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\000\000\001\153\001\153\000\000\001\153\001\153\001\153\001\153\000\000\000\000\000\000\005\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\007n\000\000\000\000\015y\015e\000\000\001\153\001\153\000\000\001\153\001\153\000\000\001\153\000\000\001\153\000\000\001\153\000\006\001\153\000\000\001\153\002\238\002\226\015y\003\026\002\150\0022\003&\000\000\0026\003f\000\000\000\000\000\000\000\000\000\000\002>\006\246\000\000\000\000\001\214\000\000\002B\000\000\003r\000\000\t\178\t\182\002J\015e\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\rj\t\222\t\234\t\246\t\254\011J\001\206\001\210\002N\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\001\214\002\154\001\234\000\000\000\000\000\000\012z\000\000\000\000\000\000\001\246\000\000\000\000\014.\012\158\r\158\0076\007:\000\000\000\000\006\r\000\000\000\000\000\000\000\000\025\174\001\250\002\174\002R\000\000\000\000\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\007>\011\150\031\130\003n\000\006\011\174\003\242\r\178\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\003\182\003f\000\000\000\000\000\000\000\000\000\000\000\000\021N\025\218\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\023\026\000\000\000\000\000\000\003v\0232\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\026\006\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\006\r\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\026j\015y\015e\014.\012\158\r\158\0076\007:\002\198\000\000\b\129\000\000\000A\000\000\000\000\002\022\000A\000A\002\030\000A\000A\015y\000A\000\000\0022\000A\001\214\0026\000\000\000\000\b\129\007>\011\150\021:\002\254\000A\011\174\003\242\r\178\000A\002B\000A\000A\002\206\000\000\000\000\002J\015e\000A\000\000\000A\000\000\003N\001\226\000A\000A\000\000\000A\000A\003^\000A\000A\000A\000A\000A\000\000\000\000\000\000\000A\000\000\002N\000A\000\000\000\000\000\000\000A\000A\000A\000A\000A\000A\000\000\000\000\000\000\000\000\000\000\000\000\005\214\000\000\000\000\000A\000\000\000\000\000\000\000\000\022b\000\000\000A\000A\000A\000A\000A\002\018\000\000\b\137\000\000\014\253\000\000\000\000\002\022\014\253\014\253\002\030\014\253\014\253\002R\014\253\000\000\000\000\014\253\001\214\000\000\000\000\000\000\b\137\000A\000A\000\000\000\000\014\253\000A\000A\000A\014\253\000\000\014\253\014\253\002\206\000\000\000\000\000\000\000\000\014\253\000\000\014\253\000\000\003N\001\226\014\253\014\253\000\000\014\253\014\253\003^\014\253\014\253\014\253\014\253\014\253\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\014\253\014\253\014\253\014\253\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\005\214\000\000\000\000\014\253\000\000\000\000\000\000\000\000\022V\000\000\014\253\014\253\014\253\014\253\014\253\002\018\000\000\b\141\000\000\015\001\000\000\000\000\002\022\015\001\015\001\002\030\015\001\015\001\000\000\015\001\000\000\000\000\015\001\001\214\000\000\000\000\000\000\b\141\014\253\014\253\000\000\000\000\015\001\014\253\014\253\014\253\015\001\000\000\015\001\015\001\002\206\000\000\000\000\000\000\000\000\015\001\000\000\015\001\000\000\003N\001\226\015\001\015\001\000\000\015\001\015\001\003^\015\001\015\001\015\001\015\001\015\001\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\015\001\015\001\015\001\015\001\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\005\214\000\000\000\000\015\001\000\000\000\000\000\000\000\000\012:\000\000\015\001\015\001\015\001\015\001\015\001\002\018\000\000\b}\000\000\000=\000\000\000\000\002\022\000=\000=\002\030\000=\000=\000\000\000=\000\000\000\000\000=\001\214\000\000\000\000\000\000\b}\015\001\015\001\000\000\000\000\000=\015\001\015\001\015\001\000=\000\000\000=\000=\002\206\000\000\000\000\000\000\000\000\000=\000\000\000=\000\000\003N\001\226\000=\000=\000\000\000=\000=\003^\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\001\206\001\210\000=\000\000\000\000\000\000\000=\000=\000=\000=\000=\000=\000\000\000\000\023\162\000\000\000\000\002\150\005\214\001\214\002\154\000=\000\000\000\000\000\000\000\000\000\000\000\000\000=\000=\000=\000=\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\003\186\000\000\011\173\005\250\003:\000\000\003^\003\154\003\166\005\209\000=\000=\023\166\003\178\000\000\000=\000=\000=\014\162\000\000\000\000\018\006\011\173\000\000\011\173\011\173\023\178\005\209\028*\000\000\003\182\000\000\015\n\015R\015j\015\"\015\130\000\000\000\000\000\000\005\209\000\000\t\001\000\000\000\000\006j\015\154\015\178\000\000\000\000\000\000\000\000\007:\005\209\005\209\000\000\005\209\000\000\015\202\000\000\005\209\t\001\005\146\0286\000\000\t\001\000\242\005\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\186\015:\015\226\015\250\016*\027\234\006\201\006\201\000\000\000\000\000\000\006\201\016B\006\201\006\201\005\209\000\000\000\000\000\000\000\000\000\000\016Z\006\201#\191\006\201\006\201\006\201\000\000\006\201\006\201\006\201\000\242\000\000\000\000\000\000\000\000\016\186\000\000\016\242\016\018\000\000\000\000\006\201\000\000\011\173\016r\000\000\029b\006\201\006\201\000\000\000\000\006\201\016\138\016\162\000\000\000\000\000\000\006\201\000\000\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\006\201\006\201\006\201\000\000\000\000\000\000\000\000\000\000\bf\006\201\006\201\b&\000\000\000\000\000\000\000\000\006\201\006\201\b\174\000\000\006\201\000\000\b\186\006\201\000\000\000\000\000\000\000\000\000\000\000\000\006\201\006\201\006\201\000\000\006\201\006\201\000\000\000\000\005\225\000\000\000\000\000\000\000\000\005\225\000\000\006\201\005\225\006\201\006\201\000\000\000\000\004f\006\201\000\000\000\000\000\000\005\225\006\201\000\000\000\000\005\225\006\201\005\225\006\201\006\201\006\201\006\201\000\000\000\000\000\000\006\201\000\000\006\201\006\201\005\225\000\000\000\000\000\000\000\000\000\000\005\225\006\201\000\000\006\201\006\201\006\201\000\000\006\201\006\201\006\201\000\000\000\000\000\000\000\000\000\000\005\225\000\000\000\000\000\000\000\000\005\225\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\005\225\006\201\000\000\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\006\201\006\201\006\201\005\225\005\225\000\000\000\000\005\225\005\225\006\201\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\000\000\000\006\201\000\000\000\000\006\201\000\000\005\225\000\000\000\000\000\000\000\000\006\201\006\201\006\201\000\000\006\201\006\201\027\186\000\000\005\177\000\000\000\000\000\000\000\000\005\177\000\000\006\201\005\177\006\201\006\201\000\000\000\000\002\178\006\201\000\000\000\000\000\000\005\177\006\201\000\000\000\000\005\177\006\201\005\177\006\201\006\201\006\201\006\201\000\000\000\000\000\000\006\201\000\000\006\201\006\201\005\177\000\000\000\000\000\000\000\000\000\000\005\177\006\201\000\000\006\201\006\201\006\201\000\000\006\201\006\201\006\201\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000\000\000\000\000\000\005\177\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\005\177\006\201\000\000\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\006\201\006\201\006\201\005\177\005\177\000\000\000\000\005\177\005\177\006\201\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\000\000\000\006\201\000\000\000\000\006\201\000\000\005\177\000\000\000\000\000\000\000\000\006\201\006\201\006\201\000\000\006\201\006\201\027:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\201\000\000\006\201\006\201\000\000\000\000\004\134\006\201\000\000\000\000\000\000\000\000\006\201\000\000\004\181\000\000\006\201\004\181\006\201\006\201\005\209\005\209\000\000\000\000\005\209\000\000\005\209\000\000\000\000\005\209\000\000\000\000\000\000\004\181\004\181\005\209\004\181\004\181\000\000\005\209\000\000\000\000\000\000\000\000\000\000\000\000\005\209\029r\b\193\b\193\029\138\000\000\000\000\000\000\000\000\000\000\000\000\004\181\000\000\005\209\000\000\000\000\000\000\000\000\003\170\005\209\005\209\b\193\b\193\b\193\000\000\000\000\005\209\000\000\000\000\005\209\000\000\b\193\000\242\005\209\000\000\005\209\005\209\005\209\005\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\193\b\193\000\000\005\209\000\000\b\193\000\000\b\193\b\193\b\193\000\000\005\209\005\209\000\000\b\193\004\181\000\000\004\181\000\000\000\000\006=\000\000\000\000\000\000\000\000\000\000\t\026\002\226\000\000\000\000\004\181\b\193\000\000\b&\004\181\000\000\005\209\000\000\004\181\000\000\004\181\000y\005\209\006=\004\181\001\214\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\028\158\000y\000y\000y\000\000\000y\000y\000y\000\000\011I\003\158\000\000\b\193\029j\006\006\000\000\029n\000\000\000\000\000y\003^\000\000\000\000\000\000\000\000\000y\000y\029\158\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000\000\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\029\174\000\000\000\000\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000y\000y\000\000\015\029\000\000\000\000\015\029\011I\000\000\000\000\000\000\000y\000\000\000y\000y\000\000\015\029\000\000\000y\000\000\000\000\002\n\015\029\000y\000\000\0159\0159\000y\002\022\000y\0159\002\030\001\210\0159\015\029\000\000\000\000\000\000\000\000\001\214\015\029\004^\000\000\0159\0159\0159\000\000\0159\0159\0159\000\000\000\000\015\029\000\000\000\000\015\029\002\206\000\000\000\000\000\000\015\029\0159\000\000\000\000\000\000\003N\001\226\0159\0159\000\000\000\000\0159\003^\000\000\000\000\000\000\015\029\003\186\000\000\0159\015\029\000\000\0159\000\000\000\000\000\000\000\000\0159\0159\0159\015\029\015\029\000\000\000\000\015\029\000\000\0159\0159\000\000\000\000\005\214\023n\000\000\0159\0159\000\000\000\000\004n\000\000\000\000\0159\000\000\015\029\000\000\000\000\000\000\000\000\0159\0159\0159\000\000\0159\0159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0159\000\006\0159\0159\000\000\002\238\002\226\0159\003\026\002\150\000\000\003&\0159\000\000\003f\000\000\0159\000\000\0159\0159\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\022.\000\000\015V\012\158\r\158\0076\007:\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\238\002\226\002\030\003\026\002\150\000\000\003&\000\000\000\000\003f\001\214\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\002\206\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\003N\001\226\t\206\t\210\000\000\t\214\t\218\003^\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\005\214\000\000\000\000\012z\000\000\000\000\000\000\000\000\031\174\000\000\021\218\012\158\r\158\0076\007:\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\238\002\226\002\030\003\026\002\150\000\000\014N\000\000\000\000\003f\001\214\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\002\206\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\003N\001\226\t\206\t\210\000\000\t\214\t\218\003^\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\014f\007*\000\000\000\000\000\000\000\000\000\000\000\000\005\214\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\014n\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018\154\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\020v\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018\234\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\206\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018\030\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\158\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\001\169\005\250\003v\000\000\t\186\001\169\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\006\206\000\000\003^\000\000\001\169\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006j\012z\000\000\001\169\000\000\000\000\000\000\000\000\016F\012\158\r\158\0076\007:\000\000\001\169\000\000\000\000\000\000\000\000\001\169\001\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\001\169\001\169\000\000\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\011\153\011\153\011\174\003\242\r\178\011\153\000\000\001\210\011\153\000\000\000\000\000\000\t\209\000\000\000\000\001\169\011\153\000\000\011\153\011\153\011\153\000\000\011\153\011\153\011\153\001\169\000\000\bf\000\000\000\000\b&\000\000\000\000\000\000\000\000\000\000\011\153\t\209\000\000\000\000\000\000\t\209\011\153\011\153\000\000\000\000\011\153\000\000\000\000\000\000\000\000\000\000\003\186\000\000\011\153\000\000\000\000\011\153\000\000\000\000\000\000\000\000\011\153\011\153\011\153\000\000\000\000\000\000\011\209\005\250\000\000\011\153\011\153\000\000\000\000\000\000\000\000\000\000\011\153\011\153\000\000\000\000\004n\000\000\000\000\011\153\000\000\t\002\"\186\000\000\011\209\000\000\011\153\011\153\011\153\000\000\011\153\011\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\153\000\006\011\153\011\153\006j\002\238\002\226\011\153\003\026\002\150\000\000\003&\011\153\000\000\003f\000\000\011\153\000\000\011\153\011\153\000\000\000\000\000\000\000\000\001\214\000\242\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\017F\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\bf\000\000\000\000\b&\000\000\000\000\000\000\000\000\011\209\012z\b\174\000\000\000\000\000\000\b\186\000\000\016\166\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\020\202\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\020\226\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\020\234\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\016\190\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\016\214\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016\222\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\014\166\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\022\022\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018\194\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018F\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016\246\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\019B\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000 \190\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162 \214\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000 \222\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015>\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\019\134\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\020b\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015&\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\001\206\001\210\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\001\214\002\154\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\014\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003> v\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\007>\011\150\000\000\000\000\000\000\011\174\003\242\r\178\r\201\000\000\000\000\r\201\000\000\000\000\r\201\r\201\003\182\000\000\r\201\006\153\r\201\000\000\000\000\r\201\000\000\000\000\000\000\r\201\r\201\000\000\r\201\r\201\000\000\r\201\000\000\r\201 \142\000\000\000\000\000\000\r\201\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\201\000\000\r\201\000\000\000\000\000\000\000\000\000\000\r\201\r\201\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\r\201\000\000\000\000\r\201\r\201\000\000\r\201\000\000\r\201\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\201\r\201\000\000\000\000\r\201\000\000\r\201\000\000\000\000\000\000\000\000\000\000\007Z\000\000\000\000\000\000\000\000\000\000\000\000\r\201\r\201\000\000\r\201\r\201\000\000\r\201\000\000\r\201\000\000\r\201\000\006\r\201\000\000\r\201\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016^\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\254\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\134\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016.\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\014\190\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\019\026\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016v\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000 \250\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162!\018\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000!\026\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\018n\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\020\146\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016\022\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\019j\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\250\007>\011\150\002\242\011\141\011\141\011\174\003\242\r\178\011\141\000\000\001\210\011\141$F\000\000\000\000\000\000\000\000\000\000\003n\011\141\000\000\011\141\011\141\011\141\000\000\011\141\011\141\011\141\000\000\000\000\011Z\000\000\000\000\000\000\000\000\000\000\022\146\000\000\000\000\011\141\000\000\000\000\000\000\000\000\000\000\011\141\011\141\000\000\030\210\011\141\000\000\023\026\000\000\000\000\000\000\003\186\0232\011\141\000\000\000\000\011\141\000\000\000\000\000\000\000\000\011\141\011\141\011\141\000\000\000\000\000\000\000\000\023:\000\000\011\141\011\141#\246\000\000\000\000\000\000\000\000\011\141\011\141\000\000\000\000\004n\023N\023\150\011\141\000\000\006%\000\000\000\000\000\000\000\000\011\141\011\141\011\141\000\000\011\141\011\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028~\000\000\011\141\000\006\011\141\011\141\000\000\002\238\002\226\011\141\003\026\002\150\000\000\rZ\011\141\000\000\003f\000\000\011\141\000\000\011\141\011\141\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\r\134\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\020\"\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\rF\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\r\214\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\014\226\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\016\142\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\031n\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015n\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\193\000\000\000\000\000\000\000\000\005\193\007>\011\150\005\193\011\149\011\149\011\174\003\242\r\178\011\149\000\000\001\210\011\149\005\193\000\000\000\000\000\000\005\193\000\000\005\193\011\149\000\000\011\149\011\149\011\149\000\000\011\149\011\149\011\149\000\000\000\000\005\193\000\000\000\000\000\000\000\000\000\000\005\193\000\000\000\000\011\149\000\000\000\000\000\000\000\000\000\000\011\149\011\149\000\000\005\193\011\149\000\000\005\193\000\000\000\000\000\000\003\186\005\193\011\149\000\000\000\000\011\149\000\000\000\000\000\000\000\000\011\149\011\149\011\149\000\000\000\000\000\000\000\000\005\193\005\193\011\149\011\149\005\193\000\000\000\000\000\000\000\000\011\149\011\149\000\000\000\000\004n\005\193\005\193\011\149\000\000\005\193\005\193\000\000\000\000\000\000\011\149\011\149\011\149\000\000\011\149\011\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\193\000\000\011\149\000\000\011\149\011\149\000\000\000\000\000\000\011\149\000\000\022\234\000\000\000\000\011\149\000\000\000\000\000\000\011\149\000\000\011\149\011\149\011\145\011\145\000\000\000\000\000\000\011\145\000\000\001\210\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\000\011\145\011\145\011\145\000\000\011\145\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\003\186\000\000\011\145\000\000\000\000\011\145\000\000\000\000\000\000\000\000\011\145\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\000\000\000\000\000\000\011\145\011\145\000\000\000\000\004n\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\000\000\011\145\011\145\011\145\000\000\011\145\011\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\145\000\006\011\145\011\145\000\000\002\238\002\226\011\145\003\026\002\150\000\000\003&\011\145\000\000\003f\000\000\011\145\000\000\011\145\011\145\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\000\000\000\000\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\182\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\238\002\226\000\000\003\026\002\150\000\000\003&\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\007>\011\150\000\000\000\000\001\214\011\174\003\242\r\178\003r\000\000\t\178\t\182\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\000\000\000\000\t\206\t\210\000\000\t\214\t\218\000\000\t\222\t\234\t\246\t\254\011J\001\206\001\210\000\000\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\011\162\012b\007*\000\000\000\000\000\000\001\214\002\154\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\000\000\000\000\000\015\230\012\158\r\158\0076\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003> v\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\007>\011\150\000\000\005\253\000\000\011\174\003\242\r\178\000\250\n1\n1\002\242\000\000\n1\000\000\n1\003\182\000\000\n1\006\157\000\000\003j\000\000\000\000\011V\005\253\000\000\003n\n1\000\000\001\206\002\146\000\000\000\000\002\150\n1 \142\000\000\000\000\011Z\000\000\000\000\000\000\000\000\000\000\022\146\000\000\000\000\n1\001\214\002\154\001\234\000\000\000\000\n1\n1\000\000\030\210\000\000\001\246\023\026\n1\000\000\000\000\n1\0232\000\000\000\000\n1\000\000\n1\n1\n1\n1\000\000\002\166\002\174\000\000\000\000\000\000\003:\023:\003^\003\154\003\166\n1\000\000\000\000\000\000\027\206\000\000\"2\000\000\n1\n1\023N\023\150\000\000\000\000\005\253\005\253\000\000\000\000\000\000\000\000\000\000\003\182\000\000\000\000\000\000\000\000\000\000\000\000\r\209\000\000\007:\r\209\028~\n1\003\134\002\226\000\000\000\000\002\150\n1\003\138\">\000\000\003f\000\000\000\000\000\000\r\209\r\209\rj\r\209\r\209\000\000\001\214\000\000\001\206\001\210\017\"\027\234\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\170\000\000\r\209\000\000\005\166\001\214\001\218\001\234\000\000\000\000\b6\001\194\000\000\000\000\000\000\001\246\000\000\003^\000\000\000\000\006\238\000\000\001\254\r\209\006\242\000\000\006\250\007\030\007~\007*\000\000\001\250\002\174\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\007.\000\000\000\000\000\000\003\178\000\000\000\000\000\000\0076\007:\000\000\007\186\r\209\000\000\r\209\000\000\000\000\007\198\000\000\000\000\000\000\003\182\000\000\000\000\000\000\000\000\000\000\r\209\000\000\000\000\r\209\r\209\000\000\007>\000\000\r\209\000\000\r\209\000\000\003\242\r\213\r\209\000\000\r\213\000\000\000\000\003\134\002\226\000\000\000\000\002\150\023\170\003\138\000\000\000\000\003f\000\000\000\000\000\000\r\213\r\213\024\210\r\213\r\213\000\000\001\214\000\000\001\206\001\210\029&\000\000\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\213\000\000\005\166\001\214\001\218\001\234\000\000\000\000\005\178\001\194\000\000\000\000\000\000\001\246\000\000\003^\000\000\000\000\006\238\000\000\003B\r\213\006\242\000\000\006\250\007\030\007~\007*\000\000\001\250\002\174\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\007.\000\000\000\000\000\000\003\178\000\000\000\000\000\000\0076\007:\000\000\007\186\r\213\000\000\r\213\000\000\000\000\007\198\000\000\000\000\000\000\003\182\000\000\000\000\000\000\000\000\000\000\r\213\000\000\000\000\r\213\r\213\000\000\007>\000\000\r\213\000\000\r\213\000\000\003\242\000\000\r\213\006\253\015\185\000\000\000\000\000\000\000\000\015\185\015\185\000\000\000\000\015\185\000\000\015\185\000\000\000\000\015\185\000\000\000\000\000\000\006\253\000\000\000\000\000\000\006\253\000\000\015\185\000\000\015\185\000\000\015\185\000\000\000\000\000\000\000\000\000\000\015\185\000\000\b\158\015\185\000\000\015\185\000\000\000\000\001\206\001\210\000\000\000\000\015\185\015\185\000\000\000\000\015\185\015\185\000\000\000\000\000\000\000\000\000\000\015\185\006\246\000\000\015\185\001\214\002\154\001\234\015\185\015\185\015\185\000\000\015\185\015\185\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\003B\000\000\015\185\015\185\000\000\000\000\000\000\000\000\000\000\001\250\002\174\015\185\015\185\000\000\003:\006\253\003^\003\154\003\166\000\000\006\249\015\185\015\185\003\178\015\185\000\000\015\185\015\185\000\000\000\000\015\185\006\253\015\185\000\000\006\253\015\185\015\185\015\185\000\000\006\249\003\182\015\185\015\185\006\249\000\000\015\185\000\000\015\185\000\000\015\185\000\000\000\000\000\000\000\000\000\000\015\185\000\000\b\158\015\185\000\000\015\185\000\000\000\000\001\206\001\210\028\198\000\000\015\185\015\185\000\000\000\000\015\185\015\185\000\000\000\000\000\000\000\000\003\238\015\185\003\242\000\000\015\185\001\214\001\218\001\234\015\185\015\185\015\185\000\000\015\185\015\185\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\002\186\000\000\015\185\015\185\000\000\000\000\000\000\000\000\000\000\001\250\002\174\015\185\015\185\000\000\003:\006\249\003^\003\154\003\166\000\000\000\000\000\000\015\185\003\178\015\185\000\000\000\000\015=\015=\000\000\000\000\006\249\015=\000\000\006\249\015=\015\185\015\185\000\000\000\000\003\182\015\185\015\185\004~\000\000\015=\015=\015=\000\000\015=\015=\015=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015=\000\000\000\000\000\000\000\000\000\000\015=\015=\000\000\000\000\015=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015=\000\000\000\000\015=\000\000\000\000\000\000\000\000\015=\015=\015=\000\000\000\000\000\000\000\000\000\000\000\000\015=\015=\000\000\000\000\000\000\000\000\000\000\015=\015=\000\000\000\000\015=\000\000\000\000\015=\000\000\000\000\000\000\000\000\000\000\000\000\015=\015=\015=\000\000\015=\015=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015=\000\250\015=\015=\002\242\004\001\004\001\015=\000\000\000\000\004\001\000\000\015=\004\001\006\029\000\000\015=\000\000\015=\015=\003n\004~\000\000\004\001\004\001\004\001\000\000\004\001\004\001\004\001\000\000\000\000\011Z\000\000\000\000\000\000\000\000\000\000\022\146\000\000\000\000\004\001\000\000\000\000\000\000\000\000\000\000\004\001\"\018\000\000\030\210\004\001\000\000\023\026\000\000\000\000\000\000\000\000\0232\004\001\000\000\000\000\004\001\000\000\000\000\000\000\000\000\004\001\004\001\004\001\000\000\000\000\000\000\000\000\023:\000\000\004\001\004\001\000\000\000\000\000\000\000\000\000\000\004\001\004\001\000\000\000\000\004\001\023N\023\150\004\001\000\000\000\000\000\000\000\000\000\000\000\000\004\001\004\001\004\001\000\000\004\001\004\001\003\225\003\225\000\000\000\000\000\000\003\225\000\000\028~\003\225\004\001\000\000\004\001\004\001\000\000\000\000\000\000\004\001\000\000\003\225\003\225\003\225\004\001\003\225\003\225\003\225\004\001\000\000\004\001\004\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\225\000\000\000\000\000\000\000\000\000\000\003\225\004\002\000\000\000\000\003\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\225\000\000\000\000\003\225\000\000\000\000\000\000\000\000\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\003\225\000\000\000\000\003\225\000\000\000\000\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\000\000\003\225\003\225\001\193\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\193\003\225\000\000\003\225\003\225\000\000\000\000\000\000\003\225\000\000\001\193\001\193\001\193\003\225\001\193\001\193\001\193\003\225\000\000\003\225\003\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\001\193\001\193\001\206\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\001\193\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\214\002\154\001\193\be\nE\000\000\004\154\000\000\001\193\002\238\002\226\000\000\000\000\002\150\000\000\r\238\000\000\000\000\003f\000\000\000\000\000\000\000\000\be\000\000\000\000\003> v\001\214\000\000\014\n\003:\003r\003^\003\154\003\166\000\000\000\000\014\022\000\000\003\178\003v\000\000\t\186\000\000\000\000\000\000\000\000\000\000\000\000\t\214\t\218\000\000\000\000\t\234\001\194\000\000\003\182\000\000\000\000 \162\003^\000\000\000\000\t\242\000\000\000\000\000\000\011~\011\130\011\142\000\000\014\030\007*\000\000\000\000\000\000 \142\000\000\000\000\000\000\000\000\000\000\000\000\012j\r\142\000\000\000\000\000\000\000\000\000\000\005\233\005\250\0076\007:\000\000\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\012r\000\000\r\150\000\000\000\000\005\233\000\000!\214\020\198\005\233\000\000\005\233\000\000\000\000\007>\011\150\000\000\000\000\000\000\011\174\003\242\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\005\233\006j\000\000\000\000\005\233\000\000\000\000\000\000\000\000\011\254\000\000\000\000\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\005\233\003\018\000\242\000\000\000\000\000\000\000\000\000\000\000\000\005\233\005\233\000\000\000\000\000\000\000\000\000\000\005\233\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\237\005\250\005\233\005\233\006\162\000\000\005\233\005\233\000\000\000\000\000\000\000\000\000\000\006\170\000\000\000\000\014\162\005\233\000\000\b\237\002\t\006\174\t\233\b\237\005\233\000\000\000\000\000\000\000\000!V\015\n\015R\015j\015\"\015\130\005\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006j\015\154\015\178\000\000\000\000\000\000\000\000\000\000\011\254\000\000\000\000\000\000\000\000\015\202\000\000\000\000\t\145\000\000\000\000\t\145\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\186\015:\015\226\015\250\016*\t\145\t\145\000\000\t\145\t\145\000\000\b\237\016B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016Z\0011#\175\000\000\012\154\000\000\0011\000\000\t\145\0011\000\000\000\000\000\000\000\000\000\000\016\186\022j\016\242\016\018\0011\000\000\0011\000\000\0011\016r\0011\000\000\000\000\000\000\000\242\000\000\000\000\016\138\016\162\000\000\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\0011\020F\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\0011\t\145\000\000\t\145\000\000\0011\0011\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\bf\000\000\000\000\b&\t\145\0011\0011\000\000\t\145\0011\t\145\000\000\000\000\000\000\t\145\000\000\000\000\000\000\000\000\0011\0011\0011\000\000\0011\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\bf\000\000\000\000\b&\000\000\0011\001\153\000\000\000\000\000\000\b\174\001\153\001\153\000\000\b\186\001\153\0011\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\001\153\001\153\001\153\000\000\001\153\001\153\005\241\000\000\000\000\000\000\000\000\000\250\001\206\001\210\002&\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\024v\001\153\001\153\000\000\005\241\000\000\003n\001\214\002\154\001\234\000\000\000\000\001\153\000\000\021\174\000\000\000\000\001\246\024z\000\000\000\000\000\000\000\000\000\000\024\162\000\000\001\153\001\153\000\000\000\000\000\000\001\153\001\153\001\250\002\174\000\000\000\000\000\000\003:\023\026\003^\003\154\003\166\000\000\0232\000\000\000\000\003\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025B\003\134\002\226\000\000\003\182\002\150\000\000\011\n\000\000\000\000\003f\000\000\000\000\000\000\023N\025V\000\000\000\000\005\241\005\241\001\214\000\000\011:\000\000\000\000\000\000\000\000\005\154\000\000\000\000\012\170\000\000\000\000\000\000\000\000\000\000\025f\000\000\000\000\000\000\005\166\003\238\000\000\003\242\000\000\000\000\012\214\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\r\173\006\242\000\000\006\250\000\000\012\254\007*\000\000\000\000\000\000\000\000\007\237\005\250\000\000\000\000\005\149\007\237\000\000\007.\007\237\000\000\000\000\000\000\000\000\000\000\000\000\0076\007:\000\000\007\237\017\022\031\182\000\000\007\237\000\000\007\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\173\000\000\007\237\r\173\r\173\000\000\007>\000\000\007\237\006j\r\173\000\000\003\242\000\000\r\173\005\149\000\000\000\000\000\000\000\000\007\237\000\000\000\000\007\237\000\000\000\000\000\000\000\000\007\237\007\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\237\007\237\000\000\000\000\007\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\237\007\237\005\025\000\000\007\237\007\237\007!\005\250\000\000\000\000\000\000\007!\000\000\000\000\007!\007\237\000\000\005\025\000\000\000\000\nN\000\000\007\237\000\000\007!\000\000\012B\005\025\007!\000\000\007!\005\025\000\000\007\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007!\000\000\000\000\000\000\000\000\000\000\007!\006j\000\000\000\000\000\000\000\000\001\185\000\000\000\000\011\254\000\000\001\185\007!\023\162\001\185\007!\002\150\000\000\000\000\000\000\007!\007!\000\242\000\000\001\185\000\000\000\000\000\000\001\185\000\000\001\185\000\000\000\000\000\000\028&\000\000\007!\007!\000\000\000\000\007!\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\185\000\000\007!\007!\004\249\000\000\007!\007!\000\000\023\166\000\000\000\000\001\185\000\000\000\000\001\185\000\000\000\000\000\000\004\249\001\185\001\185\nN\023\178\007!\028J\000\000\000\000\000\000\004\249\000\000\000\000\000\000\004\249\000\000\007!\001\185\001\185\000\000\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\001\185\001\185\000\000\000\000\001\185\001\185\004E\004E\000\000\000\000\028V\004E\000\000\000\000\004E\001\185\000\000\000\000\000\000\000\000\000\000\000\000\001\185\000\000\004E\000\000\004E\027\234\004E\000\000\004E\000\000\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\209\000\000\000\000\004E\000\000\000\000\004E\000\000\000\000\000\000\000\000\004E\004E\004E\000\213\005\250\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\004E\000\213\000\000\002\017\000\000\000\213\000\000\000\213\000\000\000\000\004E\004E\004E\000\000\004E\004E\000\000\000\000\000\000\000\213\000\000\006\209\000\000\000\000\000\000\000\213\006j\000\000\004E\004E\000\000\007i\004E\000\000\000\000\000\000\005\169\000\213\000\000\000\000\000\213\005\169\000\000\004E\005\169\000\213\000\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\000\000\000\000\005\169\000\000\005\169\000\213\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\000\000\000\213\000\213\005)\005\169\000\213\000\213\000\209\005\250\000\000\000\000\000\000\000\209\000\000\000\000\000\209\005\169\000\000\005)\005\169\000\000\nN\000\000\000\213\005\169\000\209\000\000 r\005)\000\209\000\000\000\209\005)\000\000\000\213\000\000\000\000\000\000\000\000\000\000\005\169\005\169\000\000\000\209\005\169\000\000\000\000\000\000\000\000\000\209\006j\000\000\000\000\000\000\005\169\005\169\000\000\000\000\005\169\005\169\007)\000\209\000\000\000\000\000\209\007)\000\000\000\000\007)\000\209\000\209\000\242\000\000\000\000\000\000\000\000\005\169\000\000\007)\000\000\031\166\000\000\007)\000\000\007)\000\209\000\209\030\166\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\000\007)\000\000\000\000\000\209\000\209\0059\007)\000\209\000\209\000\000\000\000\000\000\000\000\000\000\000\000\011\254\000\000\000\000\007)\000\000\0059\007)\000\000\nN\000\000\000\209\007)\007)\000\242\000\000\0059\000\000\000\000\000\000\0059\000\000\000\209\000\000\000\000\000\000\000\000\000\000\007)\007)\000\000\000\000\007)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007)\007)\r\174\000\000\007)\007)\b\249\005\250\000\000\000\000\000\000\b\249\000\000\000\000\b\249\000\000\000\000\bf\000\000\000\000\b&\031\170\007)\000\000\b\249\000\000\005\137\b\174\b\249\000\000\b\249\b\186\000\000\007)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\249\000\000\000\000\000\000\000\000\000\000\b\249\006j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\233\b\249\000\000\000\000\b\249\007\233\000\000\000\000\007\233\b\249\b\249\000\242\000\000\000\000\000\000\000\000\000\000\000\000\007\233\000\000\t\130\000\000\007\233\000\000\007\233\b\249\b\249\000\000\000\000\b\249\000\000\000\000\000\000\000\000\000\000\000\000\007\233\000\000\000\000\b\249\b\249\005\137\007\233\b\249\b\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\233\000\000\bf\007\233\000\000\b&\012\186\b\249\007\233\007\233\000\242\000\000\b\174\000\000\000\000\000\000\b\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\233\007\233\000\000\000\000\007\233\000\000\000\000\001\206\001\210\000\000\000\000\000\000\000\000\000\000\007\233\007\233\028\"\000\000\007\233\007\233\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\154\000\000\007\233\000\000\bf\004%\000\000\b&\t\134\007\233\004%\000\000\001\210\004%\b\174\000\000\000\000\000\000\b\186\000\000\007\233\011\133\000\000\004% \154\003>\004b\004%\000\000\004%\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\000\000\004%\000\000\000\000\000\000\000\000\000\000\004%\001\173\000\000\000\000\000\000\000\000\011%\011%\000\000\003\182\003\186\011%\004%\000\000\011%\004%\000\000\000\000\000\000\000\000\004%\004%\004%\000\000\011%\000\000\011%\000\000\011%\000\000\011%\000\000\000\000\000\000\000\000\000\000\004%\004%\000\000\000\000\004n\000\000\011%\006\165\000\000\000\000\000\000\000\000\011%\011%\004%\004%\000\000\000\000\004%\004%\000\000\011\254\000\000\000\000\011%\000\000\000\000\011%\000\000\004%\000\000\000\000\011%\011%\000\242\000\000\004%\000\000\000\000\000\000\000\000\004%\000\000\000\000\000\000\000\000\000\000\004%\011%\011%\000\221\000\000\011%\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\011%\011%\011%\000\000\011%\011%\000\221\000\000\000\221\000\000\000\221\000\000\000\221\000\000\000\000\011%\000\000\000\000\011%\000\000\000\000\0126\011%\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\011%\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\221\000\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\153\000\000\000\221\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\000\221\000\221\026v\000\000\000\221\000\221\000\153\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\221\000\000\000\221\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\153\000\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\157\000\000\000\153\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\153\000\153\028\214\000\000\000\153\000\153\000\157\000\000\000\157\000\000\000\157\000\000\000\157\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\153\000\000\000\153\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\157\000\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\161\000\000\000\157\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\157\000\157\0296\000\000\000\157\000\157\000\161\000\000\000\161\000\000\000\161\000\000\000\161\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\157\000\000\000\157\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\161\000\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\012^\000\000\000\161\000\161\007U\007U\000\000\000\000\000\000\007U\000\000\000\000\007U\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\007U\000\000\007U\000\000\007U\000\000\007U\000\161\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007U\000\000\000\000\000\000\000\000\000\000\007U\007U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007U\000\000\000\000\007U\000\000\000\000\007U\000\000\000\000\000\000\000\000\007U\007U\007U\004E\004E\000\000\000\000\000\000\004E\000\000\000\000\004E\000\000\000\000\000\000\000\000\007U\007U\000\000\000\000\007U\004E\000\000\004E\000\000\004E\000\000\004E\000\000\000\000\007U\007U\007U\000\000\007U\007U\000\000\000\000\000\000\004E\000\000\006\170\000\000\000\000\000\000\004E\004E\000\000\007U\000\000\000\000\007U\007U\000\000\006\213\000\000\000\000\004E\000\000\001\n\004E\000\000\000\000\007U\000\000\004E\004E\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\002\170\000\000\004E\004E\000\000\000\000\004E\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\004E\004E\004E\000\000\004E\004E\001*\000\000\0012\0016\000\000\006\213\000\000\000\000\000\000\000\000\000\000\001:\004E\004E\001>\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\007v\000\000\001Z\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\001^\003\138\000\000\000\000\003f\000\000\000\000\001b\000\000\007z\000\000\b\238\000\000\000\000\001\214\000\000\000\000\001\158#\018\000\000\000\000\005\154\000\000\000\000\001\162\000\000\001\166\000\000\000\000\000\000\001\170\000\000\001\174\001\178\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\t\016\t\007.\000\000\000\000\016\t\000\000\000\000\016\t\000\000\0076\007:\000\000\007\186\000\000\000\000\000\000\000\000\016\t\007\198\016\t\000\000\016\t\000\000\016\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\214\000\000\000\000\007>\016\t\t*\000\000\000\000\000\000\003\242\016\t\016\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\016\t\000\000\000\000\016\t\000\000\000\000\000\000\000\000\016\t\016\t\016\t\007I\007I\000\000\000\000\000\000\007I\000\000\000\000\007I\000\000\000\000\000\000\000\000\016\t\016\t\000\000\000\000\016\t\007I\000\000\007I\000\000\007I\000\000\007I\000\000\000\000\016\t\016\t\016\t\000\000\016\t\016\t\000\000\000\000\000\000\007I\000\000\003\210\000\000\000\000\000\000\007I\007I\000\000\016\t\000\000\000\000\000\000\016\t\000\000\011\254\000\000\000\000\007I\000\000\001\n\007I\000\000\000\000\016\t\000\000\007I\007I\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\007I\007I\000\000\000\000\007I\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\007I\007I\007I\000\000\007I\007I\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001:\007I\000\000\001>\007I\007I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007I\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\004\165\000\000\000\000\004\165\000\000\000\000\000\000\001^\011!\011!\000\000\000\000\000\000\011!\001b\000\000\011!\000\000\000\000\004\165\004\165\000\000\004\165\004\165\001\158#.\011!\000\000\011!\000\000\011!\001\162\011!\001\166\000\000\000\000\000\000\001\170\000\000\001\174\001\178\000\000\000\000\004\165\011!\000\000\000\000\000\000\000\000\000\000\011!\011!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011!\000\000\000\242\011!\000\000\000\000\000\000\000\000\011!\011!\011!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011!\011!\000\000\000\000\011!\000\000\000\000\000\000\004\165\000\000\004\165\000\000\000\000\000\000\011!\011!\011!\000\000\011!\011!\016\005\016\005\000\000\004\165\000\000\016\005\b&\004\165\016\005\011!\000\000\004\165\011!\004\165\000\000\000\000\011!\004\165\016\005\000\000\016\005\000\000\016\005\000\000\016\005\004\154\000\000\011!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\005\000\000\000\000\000\000\000\000\000\000\016\005\016\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\016\005\000\000\000\000\016\005\000\000\000\000\000\000\000\000\016\005\016\005\016\005\001\189\000\000\000\000\000\000\000\000\001\189\000\000\023\162\001\189\000\000\002\150\000\000\000\000\016\005\016\005\000\000\000\000\016\005\001\189\000\000\000\000\000\000\001\189\000\000\001\189\000\000\000\000\016\005\016\005\016\005\000\000\016\005\016\005\000\000\000\000\000\000\001\189\000\000\003\210\000\000\000\000\000\000\001\189\000\000\000\000\016\005\000\000\000\000\000\000\016\005\000\000\023\166\000\000\000\000\001\189\000\000\000\000\001\189\000\000\004\029\016\005\000\000\001\189\001\189\004\029\023\178\001\210\004\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\n\000\000\004\029\001\189\001\189\000\000\004\029\001\189\004\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007:\001\189\001\189\000\000\004\029\001\189\001\189\000\000\000\000\000\000\004\029\0159\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\000\003\186\000\000\004\029\001\189\000\000\004\029\000\000\000\000\027\254\000\000\004\029\004\029\004\029\000\000\001\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\029\004\029\000\000\000\000\004n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\029\004\029\001\173\000\000\004\029\004\029\000\000\001\173\000\000\001\210\001\173\000\000\000\000\000\000\000\000\004\029\000\000\000\000\011\133\000\000\001\173\000\000\004\029\000\000\001\173\000\000\001\173\004\029\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001\173\b\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\186\000\000\001\173\000\000\000\000\001\173\000\000\011\213\000\000\000\000\001\173\001\173\001\173\003\134\002\226\000\000\000\000\002\150\000\000\003\138\000\000\000\000\003f\000\000\000\000\000\000\001\173\001\173\000\000\011\213\004n\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\001\173\001\173\000\000\000\000\001\173\001\173\000\000\000\000\000\000\000\000\000\000\000\000\005\166\000\000\000\000\001\173\000\000\000\000\005\178\001\194\000\000\000\000\001\173\000\000\000\000\003^\000\000\001\173\006\238\000\000\000\000\022N\006\242\001\173\006\250\007\030\007~\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\162\000\000\007.\000\000\002\001\000\000\000\000\000\000\000\000\000\000\0076\007:\000\000\007\186\015\n\015R\015j\015\"\015\130\007\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\154\015\178\000\000\000\000\000\000\000\000\000\000\007>\000\000\011\213\000\000\012\146\015\202\003\242\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\186\015:\015\226\015\250\016*\000\000\004)\000\000\000\000\000\000\000\000\004)\016B\001\210\004)\000\000\000\000\000\000\000\000\000\000\000\000\016Z\011\133#o\004)\000\000\000\000\000\000\004)\000\000\004)\000\000\000\000\000\000\000\000\000\000\016\186\022R\016\242\016\018\022^\000\000\004)\000\000\000\000\016r\000\000\000\000\004)\001\173\000\000\000\000\000\000\016\138\016\162\000\000\000\000\000\000\003\186\000\000\004)\000\000\000\000\004)\000\000\000\000\000\000\000\000\004)\004)\004)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004)\004)\000\000\000\000\004n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004)\004)\001\177\000\000\004)\004)\000\000\001\177\000\000\001\210\001\177\000\000\000\000\000\000\000\000\004)\000\000\000\000\011\137\000\000\001\177\000\000\004)\000\000\001\177\000\000\001\177\004)\000\000\000\000\000\000\000\000\000\000\004)\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\000\000\000\000\001\177\001\177\000\000\000\000\000\000\000\000\016\001\016\001\000\000\000\000\003\186\016\001\001\177\000\000\016\001\001\177\000\000\000\000\000\000\000\000\001\177\001\177\001\177\000\000\016\001\000\000\016\001\000\000\016\001\000\000\016\001\000\000\000\000\000\000\000\000\000\000\001\177\001\177\000\000\011\225\004n\000\000\016\001\000\000\011v\002\222\002\226\000\000\016\001\016\001\001\177\001\177\000\000\002\230\001\177\001\177\011j\000\000\000\000\012\002\016\001\000\000\011\225\016\001\001\214\001\177\000\000\000\000\016\001\016\001\016\001\000\000\001\177\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\000\000\000\000\001\177\016\001\016\001\000\000\000\000\016\001\000\000\011r\006\006\000\000\000\000\000\000\000\000\000\000\003^\016\001\016\001\016\001\000\000\016\001\016\001\015\253\015\253\000\000\000\000\000\000\015\253\000\000\000\000\015\253\000\000\000\000\000\000\016\001\000\000\000\000\000\000\016\001\000\000\015\253\000\000\015\253\011\230\015\253\000\000\015\253\004\154\000\000\016\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\253\000\000\000\000\000\000\000\000\000\000\015\253\015\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\253\000\000\000\000\015\253\000\000\000\000\000\000\000\000\015\253\015\253\015\253\000\000\007\141\007\141\000\000\000\000\000\000\007\141\000\000\000\000\007\141\000\000\000\000\000\000\015\253\015\253\000\000\000\000\015\253\000\000\007\141\000\000\007\141\000\000\007\141\000\000\007\141\000\000\015\253\015\253\015\253\000\000\015\253\015\253\000\000\000\000\000\000\000\000\007\141\000\000\000\000\000\000\000\000\006B\007\141\007\141\015\253\000\000\000\000\000\000\015\253\000\000\000\000\011\254\000\000\000\000\007\141\000\000\000\000\007\141\000\000\015\253\000\000\000\000\007\141\007\141\000\242\001\141\000\000\000\000\000\000\000\000\001\141\000\000\000\000\001\141\000\000\000\000\000\000\000\000\007\141\007\141\000\000\000\000\007\141\001\141\000\000\000\000\000\000\001\141\000\000\001\141\000\000\000\000\007\141\007\141\007\141\000\000\007\141\007\141\000\000\000\000\000\000\001\141\001\141\000\000\000\000\000\000\000\000\001\141\000\000\000\000\007\141\000\000\000\000\004\021\007\141\000\000\006\209\000\000\004\021\001\141\000\000\004\021\001\141\000\000\000\000\007\141\000\000\001\141\001\141\001\141\000\000\004\021\000\000\000\000\000\000\004\021\000\000\004\021\000\000\000\000\000\000\000\000\000\000\001\141\001\141\000\000\000\000\001\141\000\000\004\021\023\186\000\000\000\000\000\000\000\000\004\021\000\000\001\141\001\141\000\000\000\000\001\141\001\141\000\000\000\000\000\000\000\000\004\021\006\209\000\000\004\021\000\000\001\141\000\000\000\000\004\021\004\021\004\021\001\141\001\141\000\000\000\000\000\000\000\000\001\141\000\000\000\000\000\000\000\000\000\000\001\141\004\021\004\021\000\000\000\000\004\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\021\004\021!\142\000\000\004\021\004\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000!6\000\000\004\021\000\000\000\000\000\000\003\134\002\226\0246\004\021\002\150\000\000\003\138\000\000\004\021\003f\000\000\000\000\000\000\000\000\004\021\000\000\006\246\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\000\000\014\241\000\000\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\014\241\000\000\000\000\000\000\014\241\003^\014\241\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\014\241\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\016\017\016\017\007.\000\000\000\000\016\017\000\000\000\000\016\017\014\241\0076\007:\014\241\007\186\000\000\000\000\000\000\014\241\016\017\007\198\016\017\000\000\016\017\000\000\016\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\014\146\007>\016\017\014\241\000\000\012\146\000\000\003\242\016\017\006j\000\000\000\000\000\000\014\241\014\241\000\000\000\000\014\241\014\241\000\000\016\017\000\000\000\000\016\017\000\000\000\000\000\000\000\000\016\017\016\017\000\242\007\165\007\165\000\000\000\000\014\241\007\165\000\000\000\000\007\165\000\000\000\000\000\000\000\000\016\017\016\017\017\n\000\000\016\017\007\165\000\000\007\165\000\000\007\165\000\000\007\165\000\000\000\000\016\017\016\017\016\017\000\000\016\017\016\017\000\000\000\000\000\000\007\165\000\000\000\000\000\000\000\000\000\000\007\165\007\165\000\000\016\017\000\000\000\000\000\000\016\017\000\000\000\000\000\000\000\000\007\165\000\000\000\000\007\165\000\000\000\000\016\017\000\000\007\165\007\165\007\165\007\133\005\250\000\000\000\000\000\000\007\133\000\000\000\000\007\133\000\000\000\000\000\000\000\000\007\165\007\165\000\000\000\000\007\165\007\133\000\000\007\133\000\000\007\133\000\000\007\133\000\000\000\000\007\165\007\165\007\165\000\000\007\165\007\165\000\000\000\000\000\000\007\133\000\000\000\000\000\000\000\000\000\000\007\133\006j\000\000\007\165\000\000\000\000\000\000\007\165\000\000\000\000\000\000\000\000\007\133\000\000\000\000\007\133\000\000\000\000\006\190\000\000\007\133\007\133\000\242\007\137\005\250\000\000\000\000\000\000\007\137\000\000\000\000\007\137\000\000\000\000\000\000\000\000\007\133\007\133\000\000\000\000\007\133\007\137\000\000\007\137\000\000\007\137\000\000\007\137\000\000\000\000\007\133\007\133\007\133\000\000\007\133\007\133\000\000\000\000\000\000\007\137\000\000\000\000\000\000\000\000\000\000\007\137\006j\000\000\007\133\000\000\000\000\000\000\007\133\000\000\000\000\000\000\000\000\007\137\000\000\000\000\007\137\000\000\000\000\007\133\000\000\007\137\007\137\000\242\007\161\005\250\000\000\000\000\000\000\007\161\000\000\000\000\007\161\000\000\000\000\000\000\000\000\007\137\007\137\000\000\000\000\007\137\007\161\000\000\007\161\000\000\007\161\000\000\007\161\000\000\000\000\007\137\007\137\007\137\000\000\007\137\007\137\000\000\000\000\000\000\007\161\000\000\000\000\000\000\000\000\000\000\007\161\006j\000\000\007\137\000\000\000\000\000\000\007\137\000\000\000\000\000\000\000\000\007\161\000\000\000\000\007\161\000\000\000\000\007\137\000\000\007\161\007\161\000\242\t\245\000\000\000\000\000\000\000\000\t\245\000\000\000\000\t\245\000\000\000\000\000\000\000\000\007\161\007\161\000\000\000\000\007\161\t\245\000\000\t\245\000\000\t\245\000\000\t\245\000\000\000\000\007\161\007\161\007\161\000\000\007\161\007\161\000\000\000\000\000\000\t\245\000\000\000\000\000\000\000\000\000\000\t\245\000\000\000\000\007\161\t\245\000\000\000\000\007\161\000\000\000\000\000\000\000\000\t\245\000\000\000\000\t\245\000\000\000\000\007\161\000\000\t\245\t\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\245\t\245\000\000\000\000\000\000\000\000\000\000\t\245\t\245\001-\000\000\t\245\000\000\000\000\001-\000\000\000\000\001-\000\000\000\000\000\000\t\245\t\245\t\245\000\000\t\245\t\245\001-\000\000\001-\000\000\001-\000\000\001-\000\000\000\000\t\245\000\000\000\000\000\000\000\000\000\000\000\000\t\245\000\000\001-\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\001-\000\000\000\000\000\000\000\000\001-\001-\000\242\000\000\016\r\016\r\000\000\000\000\000\000\016\r\001-\000\000\016\r\000\000\000\000\000\000\001-\001-\000\000\000\000\001-\000\000\016\r\000\000\016\r\000\000\016\r\000\000\016\r\000\000\001-\001-\001-\000\000\001-\001-\000\000\000\000\000\000\000\000\016\r\000\000\000\000\000\000\000\000\001-\016\r\006j\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\016\r\000\000\000\000\016\r\000\000\001-\000\000\000\000\016\r\016\r\000\242\006\201\000\000\000\000\000\000\000\000\006\201\000\000\006\201\006\201\000\000\000\000\000\000\000\000\016\r\016\r\000\000\006\201\016\r\006\201\000\000\006\201\000\000\006\201\000\000\006\201\000\000\000\000\016\r\016\r\016\r\000\000\016\r\016\r\000\000\000\000\000\000\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\000\016\r\000\000\000\000\000\000\016\r\000\000\000\000\006\201\000\000\000\000\000\000\000\000\006\201\000\000\000\000\016\r\000\000\006\201\006\201\006\201\t\249\000\000\000\000\000\000\000\000\t\249\000\000\000\000\t\249\000\000\000\000\000\000\000\000\006\201\000\000\000\000\000\000\006\201\t\249\000\000\t\249\000\000\t\249\000\000\t\249\000\000\000\000\006\201\006\201\006\201\000\000\006\201\006\201\000\000\000\000\000\000\t\249\000\000\000\000\000\000\000\000\000\000\t\249\000\000\000\000\000\000\t\249\000\000\026\242\006\201\000\000\000\000\000\000\000\000\t\249\000\000\000\000\t\249\000\000\000\000\006\201\000\000\t\249\t\249\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\249\t\249\000\000\000\000\000\000\000\000\000\000\t\249\t\249\003\134\002\226\t\249\000\000\002\150\000\000\011\n\000\000\000\000\003f\000\000\000\000\t\249\t\249\t\249\000\000\t\249\t\249\000\000\001\214\000\000\011:\000\000\000\000\000\000\000\000\005\154\t\249\000\000\012\170\000\000\000\000\000\000\000\000\t\249\000\000\000\000\003\205\000\000\005\166\000\000\000\000\000\000\000\000\000\000\012\214\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\0071\005\250\006\242\000\000\006\250\0071\012\254\007*\0071\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0071\007.\002\025\000\000\0071\000\000\0071\000\000\000\000\0076\007:\000\000\000\000\003\205\000\000\000\000\000\000\000\000\0071\000\000\000\000\000\000\000\000\000\000\0071\006j\000\000\000\000\000\000\003\205\005\233\000\000\003\205\000\000\007>\005\233\000\000\000\000\005\233\0071\003\242\000\000\000\000\000\000\0071\0071\000\242\000\000\005\233\000\000\003\206\000\000\005\233\000\000\005\233\000\000\000\000\000\000\000\000\000\000\0071\000\000\000\000\000\000\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\005\233\000\000\0071\0071\021\006\000\000\0071\0071\000\000\003\194\000\000\000\000\005\233\000\000\000\000\005\233\000\000\000\000\000\000\017\154\005\233\003\018\nN\000\000\0071\000\000\000\000\000\000\000\000\017\206\000\000\000\000\000\000\017\218\000\000\000\000\005\233\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\233\005\233\000\000\000\000\005\233\005\233\000\000\000\000\000\000\000\000\000\000\003\210\000\000\000\000\000\000\006B\000\000\003\134\002\226\000\000\000\000\002\150\005\233\011\n\000\000\000\000\003f\027\254\000\000\000\000\000\000\000\000\000\000\005\233\000\000\000\000\001\214\000\000\011:\000\000\000\000\000\000\000\000\005\154\000\000\000\000\012\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029\186\000\000\005\166\000\000\000\000\000\000\000\000\000\000\028\150\001\194\001\206\001\210\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\000\000\012\254\007*\000\000\001\214\002\154\000\000\000\000\000\000\000\000\004!\000\000\000\000\000\000\007.\004!\000\000\001\210\004!\000\000\000\000\000\000\0076\007:\000\000\000\000\028\154\000\000\004!\000\000\003>\004\130\004!\000\000\004!\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\030\134\004!\007>\000\000\000\000\000\000\000\000\004!\003\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\003\186\000\000\004!\000\000\000\000\004!\000\000\000\000\000\000\000\000\004!\004!\004!\b=\000\000\000\000\000\000\000\000\000\000\002\238\002\226\000\000\000\000\002\150\000\000\000\000\004!\004!\003f\000\000\004n\000\000\000\000\b=\000\000\000\000\000\000\000\000\001\214\000\000\004!\004!\003r\000\000\004!\004!\000\000\000\000\000\000\000\000\000\000\003v\000\000\t\186\000\000\004!\000\000\000\000\000\000\000\000\t\214\t\218\004!\000\000\t\234\001\194\000\000\004!\000\000\000\000\000\000\003^\000\000\004!\t\242\000\000\000\000\000\000\011~\011\130\011\142\000\000\000\000\007*\000\000\bj\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\000\000\bn\000\000\000\000\003f\000\000\000\000\0076\007:\000\000\000\000\001.\000\000\000\000\001\214\002!\000\000\002!\002!\025j\000\000\005\154\000\000\000\000\000\000\002!\000\000\000\000\002!\000\000\000\000\000\000\007>\011\150\005\166\000\000\002!\011\174\003\242\000\000\005\178\001\194\000\000\000\000\000\n\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\b\138\007*\000\000\000\000\002!\002!\000\000\001i\000\000\000\000\000\000\002!\001i\007.\015]\001i\000\000\002!\002!\000\000\000\000\0076\007:\015]\007\186\001i\000\000\001i\000\000\001i\007\198\001i\000\000\b\146\000\000\000\000\000\000\000\000\000\000\002!\000\000\000\000\000\000\001i\000\000\000\000\007>\000\000\000\000\001i\015]\000\000\003\242\000\000\000\000\000\000\000\000\000\000\000\000\015]\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\001i\001i\001i\001\029\011^\000\000\000\000\000\000\001\029\000\000\0029\001\029\000\000\000\000\000\000\000\000\001i\000\000\000\000\0029\015]\001\029\000\000\001\029\000\000\001\029\000\000\001\029\000\000\000\000\001i\001i\001i\000\000\001i\001i\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001\029\0029\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\0029\015U\000\000\000\000\000\000\001\029\015U\000\000\001i\015U\001\029\001\029\001\029\000\000\000\000\001\206\001\210\000\000\000\000\015U\000\000\000\000\000\000\015U\000\000\015U\001\029\000\000\000\000\000\000\0029\006\201\000\000\000\000\001\214\002\154\000\000\015U\000\000\000\000\001\029\001\029\001\029\015U\001\029\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015U\000\000\000\000\015U\000\000\003>\003\186\001\029\015U\015U\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\001\029\003\178\000\000\023\190\000\000\000\000\015U\015U\000\000\000\000\015U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\015U\015U\002\142\000\000\015U\015U\b*\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\015U\002\150\000\000\003\138\"\134\000\000\003f\015U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\015U\000\000\000\000\000\000\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\000\000\000\000\b\189\b\189\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\017\210\000\000\000\000\b\189\b\189\b\189\003\134\002\226\000\000\000\000\002\150\007.\003\138\b\189\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\000\000\007\198\b\189\b\189\000\000\005\154\000\000\b\189\000\000\b\189\b\189\b\189\000\000\000\000\000\000\000\000\b\189\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\b\189\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\007\250\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\000\000\007\198\000\000\000\000\000\000\005\154\005\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\b\022\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\011\n\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\011:\007\198\000\000\000\000\b\030\005\154\000\000\000\000\012\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\012\214\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\000\000\012\254\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\007\138\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\000\000\017\022\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028\194\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007\166\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\tR\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\000\000\007\198\000\000\000\000\b\206\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\tn\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\011\n\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\011:\007\198\000\000\000\000\tv\005\154\000\000\000\000\012\170\000\000\000\000\004\021\000\000\000\000\000\000\000\000\004\021\007>\005\166\004\021\000\000\000\000\000\000\003\242\012\214\001\194\000\000\000\000\000\000\004\021\000\000\003^\000\000\004\021\006\238\004\021\000\000\000\000\006\242\000\000\006\250\000\000\012\254\007*\000\000\000\000\000\000\004\021\023\186\000\000\000\000\000\000\000\000\004\021\000\000\007.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0076\007:\004\021\000\000\017\022\004\021\000\000\b\178\000\000\000\000\004\021\004\021\004\021\003\134\002\226\000\000\000\000\002\150\000\000\003\138\000\000\000\000\003f\029\"\000\000\007>\004\021\004\021\000\000\000\000\004\021\003\242\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\004\021\004\021!^\000\000\004\021\004\021\000\000\000\000\000\000\000\000\000\000\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\000\000\0246\004\021\000\000\000\000\003^\000\000\004\021\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\nR\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\003\138\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\000\000\007\198\000\000\000\000\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\007~\007*\000\000\000\000\000\000\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\007.\005~\000\000\000\000\003f\000\000\000\000\000\000\0076\007:\000\000\007\186\000\000\000\000\001\214\000\000\000\000\007\198\000\000\000\000\000\000\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\005\166\000\000\000\000\000\000\000\000\003\242\005\178\001\194\000\000\000\000\000\000\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\t:\007*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007.\000\000\000\000\000\000\000\000\000\000\000\000\007\225\0076\007:\000\000\007\186\007\225\000\000\002\226\007\225\000\000\007\198\000\000\000\000\tB\000\000\023~\000\000\000\000\007\225\000\000\000\000\000\000\007\225\004\021\007\225\000\000\007>\000\000\004\021\000\000\000\000\004\021\003\242\000\000\000\000\000\000\007\225\000\000\000\000\000\000\000\000\004\021\007\225\000\000\000\000\004\021\000\000\004\021\000\000\000\000\000\000\001\006\001\194\000\000\007\225\000\000\000\000\007\225\000\000\004\021\023\186\000\000\007\225\007\225\000\000\004\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\021\007\225\007\225\004\021\000\000\007\225\000\000\000\000\004\021\004\021\004\021\000\000\000\000\000\000\000\000\007\225\007\225\000\000\000\000\007\225\007\225\000\000\000\000\000\000\004\021\004\021\000\000\000\000\004\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\004\021\004\021\024\022\bA\004\021\004\021\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\000\000\n\002\000\000\000\000\003f\000\000\000\000\0246\004\021\bA\000\000\000\000\000\000\000\000\001\214\000\000\000\000\017\158\000\000\000\000\000\000\005\154\000\000\003\134\002\226\000\000\000\000\002\150\000\000\017\162\000\000\000\000\003f\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\001\214\000\000\000\000\000\000\000\000\003^\000\000\005\154\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\n\206\007*\000\000\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\000\000\007.\000\000\000\000\000\000\003^\000\000\000\000\006\238\0076\007:\000\000\006\242\000\000\006\250\007\030\017\190\007*\000\000\000\000\000\000\015\197\005\250\000\000\023*\000\000\015\197\000\000\000\000\007.\000\000\000\000\000\000\000\000\007>\000\000\000\000\0076\007:\000\000\003\242\002\029\000\000\t\237\000\000\015\197\000\000\000\000\000\000\017\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\000\000\006j\000\000\000\000\015\197\003\242\000\000\000\000\000\000\b\190\000\000\000\000\000\000\000\000\015\r\015\197\002\226\015\r\000\000#\254\015\197\015\197\000\242\000\000$\002\000\000\000\000\015\r\000\000\015\197\015\197\000\000\000\000\015\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\r\000\000\000\000\000\000\000\000\000\000\015\r\017\134\000\000#\219\015\197\000\000\000\000\000\000\000\000\001\006\001\194\000\000\015\r\000\000\015\197\015\r\bf\000\000\000\000\b&\015\r\000\000\000\000\000\000\000\000\000\000\b\174\000\000$\006\000\000\b\186\000\000\000\000\000\000\000\000\000\000\015\r\003\134\002\226\000\000\015\r\002\150\000\000\nn\000\000\000\000\003f\000\000\000\000$\n\015\r\015\r\000\000\000\000\015\r\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\000\000\001\153\000\000\000\000\000\000\000\000\001\153\015\r\000\000\001\153\000\000\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\001\153\000\000\000\000\000\000\001\153\003^\001\153\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\n\138\007*\001\153\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\007.\000\000\000\000\000\000\000\000\000\000\000\000\001\153\0076\007:\001\153\000\000\000\000\000\000\000\000\001\153\001\153\001\153\003\134\002\226\n\146\000\000\002\150\000\000\n\030\000\000\000\000\003f\000\000\000\000\000\000\001\153\001\153\007>\000\000\001\153\000\000\001\214\000\000\003\242\000\000\000\000\000\000\000\000\005\154\001\153\001\153\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\024\"\005\166\000\000\000\000\000\000\000\000\000\000\005\178\001\194\000\000\000\000\001\153\000\000\000\000\003^\000\000\001\153\006\238\000\000\000\000\000\000\006\242\000\000\006\250\007\030\n:\007*\000\000\000\000\000\000\003\134\002\226\000\000\000\000\002\150\000\000\n\162\000\000\007.\003f\000\000\000\000\000\000\000\000\000\000\000\000\0076\007:\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\nB\000\000\000\000\000\000\b\245\000\000\000\000\000\000\000\000\b\245\000\000\005\166\b\245\007>\000\000\000\000\000\000\005\178\001\194\003\242\000\000\000\000\b\245\000\000\003^\000\000\b\245\006\238\b\245\000\000\000\000\006\242\000\000\006\250\007\030\n\190\007*\000\000\000\000\000\000\b\245\000\000\000\000\000\000\000\000\000\000\b\245\000\000\007.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0076\007:\b\245\000\000\000\000\b\245\000\000\000\000\000\000\000\000\b\245\b\245\n\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007>\b\245\b\245\015U\000\000\b\245\003\242\000\000\015U\000\000\000\000\015U\000\000\000\000\000\000\b\245\b\245\022\166\000\000\b\245\b\245\015U\000\000\000\000\000\000\015U\000\000\015U\000\000\000\000\000\000\000\000\000\000\006\201\024\182\000\000\000\000\b\245\000\000\015U\000\000\000\000\000\000\000\000\000\000\015U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015U\000\000\000\000\000\000\000\000\015U\015U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015U\000\000\000\000\001\206\002\146\000\000\000\000\002\150\000\000\000\000\000\000\000\000\000\000\000\000\015U\015U\002\142\000\000\015U\015U\000\000\000\000\001\214\002\154\001\234\002\162\000\000\000\000\000\000\015U\000\000\000\000\001\246\"N\000\000\000\000\015U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015U\002\166\002\174\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\001U\000\000\000\000\000\000\027\206\001U\027\210\000\000\001U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001U\000\000\001U\003\182\001U\000\000\001U\000\000\000\000\b\209\005\250\000\000\007:\027\222\b\209\000\000\000\000\000\000\001U\000\000\000\000\000\000\000\000\027\230\001U\000\000\000\000\000\000\000\000\002\021\000\000\011\169\000\000\b\209\000\000\000\000\000\000\000\000\000\000\001U\027\234\000\000\000\000\000\000\001U\001U\000\242\000\000\000\000\000\000\000\000\000\000\006j\000\000\000\000\b\209\000\000\000\000\000\000\000\000\001U\000\000\000\000\000\000\000\000\000\000\b\209\000\000\000\000\000\000\000\000\b\209\b\209\000\242\001U\001U\001U\005\185\001U\001U\b\209\b\209\005\185\000\000\000\000\005\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\169\005\185\001U\000\000\000\000\005\185\005\217\005\185\000\000\006J\000\000\005\217\b\209\001U\005\217\000\000\000\000\000\000\000\000\005\185\000\000\000\000\b\209\000\000\005\217\005\185\000\000\000\000\005\217\000\000\005\217\000\000\000\000\000\000\011\169\000\000\000\000\005\185\0302\000\000\005\185\000\000\005\217\000\000\000\000\005\185\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\005\185\005\185\005\217\000\000\005\185\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\000\000\005\185\005\185\000\000\000\000\005\185\005\185\000\000\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\003\134\002\226\000\000\000\000\002\150\000\000\005\185\005\217\005\217\003f\000\000\005\217\005\217\000\000\000\000\000\000\000\000\026\174\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\166\027\146\000\000\003\198\000\000\000\000\r\002\001\194\000\000\001\206\001\210\000\000\000\000\003^\000\000\000\000\006\238\000\000\000\000\000\000\006\242\000\000\006\250\000\000\000\000\007*\000\000\000\000\001\214\002\154\001\234\000\000\000\000\000\000\000\000\000\000\000\000\007.\001\246\000\000\000\000\025\150\005\201\000\000\000\000\0076\007:\005\201\000\000\000\000\005\201\000\000\000\000\000\000\003>\026\238\000\000\026\014\000\000\003:\005\201\003^\003\154\003\166\005\201\000\000\005\201\000\000\026\254\n\241\007>\000\000\n\241\000\000\000\000\000\000\003\242\000\000\005\201\000\000\000\000\000\000\000\000\000\000\005\201\003\182\000\000\000\000\n\241\n\241\000\000\n\241\n\241\000\000\000\000\000\000\000\000\000\000\000\000\005\201\000\000\000\000\tu\000\000\005\201\tu\000\000\000\000\000\000\000\000\000\000\000\000\n\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\201\tu\tu\000\000\tu\tu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\241\005\201\005\201\000\000\000\000\005\201\005\201\000\000\000\000\000\000\000\000\000\000\tu\000\000\000\000\000\000\000\000\000\000\000\000\004\213\000\000\000\000\004\213\005\201\000\000\000\000\000\000\000\000\000\000\000\000\n\241\000\000\n\241\tu\024\242\000\000\000\000\000\000\004\213\004\213\000\000\004\213\004\213\000\000\000\000\007\246\000\000\004\197\n\241\n\241\004\197\000\000\000\000\n\241\000\000\n\241\000\000\000\000\000\000\n\241\000\000\000\000\004\213\tu\000\000\tu\004\197\004\197\000\000\004\197\004\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tu\000\000\000\000\b&\tu\000\242\004\229\000\000\tu\004\229\tu\000\000\004\197\000\000\tu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\229\004\229\000\000\004\229\004\229\000\000\000\000\000\000\000\242\000\000\004\213\000\000\004\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\229\004\213\000\000\000\000\b&\004\213\000\000\000\000\000\000\004\213\000\000\004\213\000\000\000\000\004\197\004\213\004\197\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\197\000\000\000\000\b&\004\197\000\000\000\000\000\000\004\197\000\000\004\197\001\206\001\210\000\000\004\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\229\000\000\004\229\000\000\000\000\000\000\000\000\000\000\001\214\001\218\000\000\000\000\000\000\000\000\000\000\004\229\000\000\000\000\b&\004\229\000\000\000\000\000\000\004\229\000\000\004\229\000\000\000\000\000\000\004\229\000\000\000\000\000\000\000\000\003>\003\186\000\000\000\000\000\000\003:\000\000\003^\003\154\003\166\000\000\000\000\000\000\000\000\003\178\000\000\023\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182" let[@inline] action_data = fun i -> @@ -67490,21 +67616,21 @@ module Tables = struct action_data (k + j) let lhs = - "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\238\238\237\237\236\235\235\234\234\234\234\234\234\234\234\234\234\233\233\232\231\230\230\230\230\230\230\230\230\229\229\229\229\229\229\229\229\228\228\228\227\227\226\225\225\225\224\224\223\223\223\223\223\223\222\222\222\222\222\222\222\222\221\221\221\221\221\221\221\221\220\220\220\220\219\218\217\217\217\217\216\216\216\216\215\215\215\214\214\214\214\213\212\212\212\211\211\210\210\209\209\209\208\208\208\208\208\208\208\208\208\207\207\206\206\206\206\206\206\206\206\205\205\204\204\203\202\201\200\199\199\198\198\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\196\196\195\194\194\194\194\193\193\193\193\193\193\193\193\193\193\193\192\192\191\191\191\191\191\191\190\189\188\188\187\187\186\186\185\184\184\183\182\182\181\180\179\179\179\178\178\177\176\176\176\176\176\176\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\173\172\171\171\170\170\170\170\170\170\169\169\168\168\168\167\167\166\166\166\166\165\165\164\164\163\163\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\155\154\154\154\154\153\153\152\152\151\151\150\150\150\150\150\149\149\149\149\148\148\148\148\148\148\148\148\148\148\148\148\148\148\148\147\147\147\146\146\146\146\146\146\146\145\145\145\145\145\145\145\144\144\143\143\142\142\142\142\142\142\141\141\140\140\139\139\138\138\137\137\137\136\135\135\135\135\134\134\134\133\133\133\133\133\133\133\133\133\133\132\132\131\131\130\130\130\130\130\130\130\130\130\130\130\130\130\129\128\127~~}}}}}|{{zzyyyyyyyyyyyyyyyxxwwvvuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuttssrrqqppoonnnmmllkkjjiihhhhhhhhhhhgfedcba`_^]\\\\\\\\\\\\\\\\\\\\\\[[[[[ZZZZZZZZZYYXXXXXWWVVUTTTSSRRRRRQQPPOONNNMMMMMMLLLKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJIIIIIIHHGGFFEEDDCCBBBAA@@??>>==<<;;;;::998888887776665554432111111111111111111100000///////...................................................................----------,,++++++++++++++++++++++****************************************************)((''&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\024\024\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015" + "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\238\238\237\237\236\235\235\234\234\234\234\234\234\234\234\234\234\233\233\232\231\230\230\230\230\230\230\230\230\229\229\229\229\229\229\229\229\228\228\228\227\227\226\225\225\225\224\224\223\223\223\223\223\223\222\222\222\222\222\222\222\222\221\221\221\221\221\221\221\221\220\220\220\220\219\218\217\217\217\217\216\216\216\216\215\215\215\214\214\214\214\213\212\212\212\211\211\210\210\209\209\209\208\208\208\208\208\208\208\208\208\207\207\206\206\206\206\206\206\206\206\205\205\204\204\203\202\201\200\199\199\198\198\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\197\196\196\195\194\194\194\194\193\193\193\193\193\193\193\193\193\193\193\192\192\191\191\191\191\191\191\190\189\188\188\187\187\186\186\185\184\184\183\182\182\181\180\179\179\179\178\178\177\176\176\176\176\176\176\176\176\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\175\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\174\173\172\171\171\170\170\170\170\170\170\169\169\168\168\168\167\167\166\166\166\166\165\165\164\164\163\163\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\155\154\154\154\154\153\153\152\152\151\151\150\150\150\150\150\149\149\149\149\148\148\148\148\148\148\148\148\148\148\148\148\148\148\148\147\147\147\146\146\146\146\146\146\146\145\145\145\145\145\145\145\144\144\143\143\142\142\142\142\142\142\141\141\140\140\139\139\138\138\137\137\137\136\135\135\135\135\134\134\134\133\133\133\133\133\133\133\133\133\133\133\132\132\131\131\130\130\130\130\130\130\130\130\130\130\130\130\130\129\128\127~~}}}}}|{{zzyyyyyyyyyyyyyyyxxwwvvuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuttssrrqqppoonnnmmllkkjjiihhhhhhhhhhhgfedcba`_^]\\\\\\\\\\\\\\\\\\\\\\[[[[[ZZZZZZZZZYYXXXXXWWVVUTTTSSRRRRRQQPPOONNNMMMMMMLLLKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJIIIIIIHHGGFFEEDDCCBBBAA@@??>>==<<;;;;::998888887776665554432111111111111111111100000///////....................................................................----------,,++++++++++++++++++++++****************************************************)((''&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\024\024\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015" let[@inline] lhs = fun i -> MenhirLib.PackedIntArray.get8 lhs i let goto_displacement = - "\005z\001O\t\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\166\000\000\000\000\011\128\b\180\000)\0140\011\014\b\128\025\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\204\000\000\000\000\000\000\000\000\000\000\015\236\000\000\000\000\000\000\016\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S~\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000JT\000C\004Z?F\000\000\026\018\000\000\000\000\000\000\006\022I,\004\026\nH\003\184\000\000\000\000\000\000\002\246\000\000\000\000\000\252\000\000\000\000\000\000\000\000\016\230\000\000\t\016\000\000\000\000\000\000\000\000\000\000\003\154\000\000\005N\015\146\n@\000\000\000\000\n~\000\000\011\012JT\000\000\000\0001\240Np\011\166\t\220?F\000\000&\178\000\000\000\000\011>\bx\000\000\n\144\007\"\000\000\014\012\n\146\004\130\004V\003z\015\146\r\198\011\184\007\170\000J\011|\012.1\n\000\000\000\000\011\224^\144\000\000&\004Np\t\234\011\170?F\004t\000\000\000\000\000\000\n\n\003`\000\000\bX\000\000j\224\007\142\r\196\007\0288B\000\000\000\000\000\000\000\000af\006\212\000\0003t\016\164\000\000&TD\156\004\230\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.\180\000_\000\000\000\000\000\000\015X!\178\012\206\000\000\006p\000\185\000\000\000\000\000\000\\\222\000\000\000\000\015\130d\226\000\000\000\000\000\000\000\000\000\000\004\014\000\000\000\000\t\004+\214\000\000\029\184\t\004\007\254\000\000\000\000\000\0006\150\000\0005T\t\004\t\004\t\004\000\000\000\000\016\n\000\000\000\000\004\014\000\000\016\024\000\000\\V\004\014\000\000i\014\000\000\004\014c\020\004\014\000\000hn\000\000\000\000\000\000\000\000\000\000\000\000>\238\000\000\014n\016\214\000\000\022<\n2f:\000\000\000\000\t\246\000\000\000\000\000\000\004\014\000\000\000\000\000\000\001^\000\000\000\000\000\000\000\000\000\000\000\000\001d\016\238\000\000\000\000\000\000\004\014\000\000<\018\000\000\000\000\000\000[\238\004\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0003>\000\000\001\031\0015\000'\000\000\000\000\000\000\r\214\000-\000\002\004t\000\000\nx\0060\011\230\000\000\007\148\002&\000j\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002,\000\000\000\000e>\000\000e|\003\134\000\000[J\004\014\\B\004\014\000\000\001\206\0005\000\000\0274\007\148\000\000\000\000\003\180\000\000\000\000\000\000\000\000\000\000\000\000a\012\007\148\027d\007\148\000\000\001T\000\000\000\000\007\212\000\000\000\000\000\000\007F\000\000\000\000\007\148\000\000\0060b\248\007\148\007\148\000\000\000\000\000\000*\1986\178\000\000\001p\000\000\000\000\000\000\007\172c\236\004\014\bLD\178\007\168\rXj\150\000\000\b\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\226\000\000\000\000\000\000\000\000\016\1689\140\000\000\000\000g\138\000\000< \000\000\000\000\000\000b\184\004\014\000\000\000\000ir\000\000\000\000\000\000\000\000\n\028\012\170B\000C\222\000\000\000\000g\192\000\000=2\000\000\000\000\015\162\000\000\000\000\000\000C\"\000\000\000\000\000\000b\252\004\014\000\000\000\000h\154\000\000\000\000\015\162@\204\000\000\015\162;B3>\012\\\012\132\000\000\000\000g\204\000\000\000\000\000\000\015\162\000\000\000\000B\234\000\000\000\000\000\000\000\000^\168\004\014\000\000\000\000if\000\000\000\000\015\162Y\016\000\000\004\014\000\000\000\000:\180\000\000\015\162\005\252\000\000\000\000\015\162\015\162\000\000\015\162\000\000\000\000\015\162\000\000\000\0006\178\000\000\000\000\000\000\000\000\015\162$\174\000\000\000\000\015\162\000\000\001\003\014\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000h\142\000\000\000\000\015\162\000\000C\152\000\000\000\000\000\000`\020\004\014\000\000\000\000j\136\000\000\000\000\015\162\015\162\000\000cR\004\014\000\000\002\214\000\b\012~\015\214\000\000\000\000\011t,\242\000\000\000\000\014j\012\180\006\"\000\000\000\000\000\000\000\000\025\134(6\015\\\011\2120\180\017\004j\2248\248\000\000O\164\014\226\000\000\000\000\000\000Y`\004\014\000\000B\016\000\000\000\000\000\000Y6\004\014\000\000\000\000fZ\000\000\000\000\000\000\015\144<\136\000\000\015\162\000\000\000\000\000\000\000\000:\214\000\000\000\000\000\000`\210\004\014\000\000\000\000j6\000\000\000\000\015\144\000\0009\028\000\000\000\000\000\000a<\004\014\000\000\000\000gR\000\000\000\000\015\144h6\000\000>\160\000\000\000\000\000\000Z\000\004\014\000\000\000\000i\172\000\000\000\000\015\144@F\000\000\005\\\000\000N\204\000\000a(\004\014\000\000\004\014\000\000\000\000\000\000\000\000\005\"\016\240$^\003b\t\206\000\146\000\000\016<\016J\tR\b$\000\000\000\000\004\254\005\b\031\n>*\016\132\002\160I\190&\168\000\000\000/\004\2207D\000\130\005\222\000|kD\000\000\000\000\000\000\000\000\000\000\002\158\025\236\000\000\000\000\000\000\000S\002\248\004V\000\230\000d\0060\004:\000\000\0034\004\254\000\000\0034\000\000\000\000\017V\007\148\000\000\000\000\000\000\000\000\000\000\000\000\0034\b8\000\000\007\148\000\000\000\000\000\000\014\226\000\000[6\004\014$\202:\242\000\000PZ\000\000\000\000E\"\015v\rp(\022\015z\rx\021\138#\136\015\162+\b\015\138\r\176Q^\016\136\000\0005>\015\162UD\000\000\016n\000\000\000\000\000\000\000\000-\\\016Z\000\000\000\000\015\162Y\016\000\000c\168\004\014\000\000i\1887\212\015\162V0\000\000c\144\004\014\000\000\000\000\000\000\000\000[\138\000\000\016t6\252\t\004\000\000'X\015\188\014\n\023\188\000\000Rp\000\000\000\000\017\024V\\\000\000\004\014b\000\004\014\000\000\000\000\000\000_p\000\000\000\000\000\000\003D3\210\015\212\014\0188N\015\1626f\015\216\rvPh\000\000\000\000\000\000\000\000\000\000T\254\015\168\r\180\017\226\000\000\000\000\006J\000\000\000\000\017B\000\000\000\000\000\000\000\000\000\000\td\000\000*H\000\000\000\000DD\015\246\014\150\000\000\000\000Uv\000\000\000\000\017b\000\000\000\000\000\000)*\000\000\014\138\011\190\030d\000\000/\200\000\000'\226\000\000\015\2042*\000\000\000\000\016PP\156\016\012\011\030\012r\000\000\016PR\212\016\018\014d\020D\000\000\016P\000\000k\004\000\000F\134\016\022\nn\015\236\000\000\016P-\240\011\150+>\000\000\000\000G\154\016\"\014x\018\182\000\000\016PM\134\r\134\014\136\025H\000\000\016PL\134\016&\t\254\023\216\000\000\016PL\242\016.\014\148\028r\000\000\016PN\026\012r\014\158\026\194\000\000\016PN*\016:\014\164\027\160\000\000\016PO\248\011\130\014\166\031<\000\000\016PK\246\011<\014\176!\128\000\000\016PTL\n\228\014\232\012\022\000\000\016PM\022\016B\014\234\024\170\000\000\016PJ\204\016D\015\016\r\000\000\000\016PN\208\016F\t\002!\220\000\000\016PI\222\t\158\0150\r\132\000\000\016PF\244\t:\015L\021\218\000\000\016PF\170\016N\015R\012\"\000\000\016PI8\016X\015h\014\168\000\000\016PH\226\t\004\015j\016p\000\000\016PO(\016Z\bd \020\000\000\016PLf\000\000\000\000\017\194\000\000\000\000\000\000#r\000\000\016r\015p\023l\000\000\016PP\206\016|\007\204\029V\000\000\016P\015\140\029\208\"\180'$\000\000V\\\000\231\000\000Z\172\004\014'\004\000\000\000\000a\016\004\014(V\000\000\000\000,\024\000\000\000\000\000!\000\000\000\000\003\018\000\000\000\000\000\000\000\000^2\004\0142\206\000\000\015\144)\020\000\0000\162\000\000\000\000\000\000\000\000Z$\004\014\000\000\000\000g.\000\000\000\000\015\144:\006\000\000\015\162\000\019\000\000\000\000\000\000\001\024\002\214\000\000\000\000\000\000\016P\016P:B\000\000\000\000\000\000\000\000H\204\0008\002\024\024\202\000\000\016P\004\172\000\000\000\000\000\000F\234\000t\004n\031\168\000\000\016PBx\000\000\000\000\000\000H \000\202\005\164 \236\000\000\016P\000C\"\128\000\000\000\000\000\000H\172\002\026\bX\027\148\000\000\016P,<\000\000\000\000\000\000Rd\002\208\005\182\027*\000\000\016P+\030\000\000\000\000\000\000K\224\t\170\b\190\019T\000\000\016P\000\000\000\000C\240\000\000\000\000\000\000KR\003\014\014R\026V\000\000\016P=\198\000\000\000\000\000\000PH\003F\006Z\028\220\000\000\016P?V\000\000\000\000\000\000L\022\004\134\t\248\021\006\000\000\016P\000\000Vb\004\182\nJ\029D\000\000\016P\000\000\020\000\000\000\000\000\016P\005\020\000\000\000\0001X\000\0004\210\000\000\000\000\000\000\000\000\000\000.b\000\000\000\0003\028\000\000\000\000\000\000\000\000@\134\000\000\000\000A\138\000\000\000\000?\198\000\000\000\000\000\000\005\194\014> \000\000\016P\000\000\000\000)T\000\0007d\000\000\000\000\000\000\000\000\000\000H\140\005\242\014&\014b\000\000Q\024\015\222\015H\016T\000\000\016P\016PE\250\015\218\014\030\r\212\000\000\016P\000\000\000\000\006T\000\000\000\000\020\000\000\000\000\000\000\015\204\000\000\000\000\000\000\000\000\000\000*2\000\000\000\000\000\000\000\000\000\000\000\000\015\"\r\214\022\232\000\000\016P\000\000\000\000\000\000\000\000\000\000\006\196\r\230\t\146\0034\000\000\004\204\000\000\007\148\000\000\017<\000\000\000\000\000\000\000\000\000\000\0310\000\000\000\000\000\000\000\000\000\000\000\0001\174\000\000\r\168\000\000\003\022\000\000\000\000\000\000\000\000\000\000\000\000b$\004\014\000\000\007\146)4\000\000\000\00008\000\000\000\000\000\000\000\000\004H\007j\000\000\000\000\000\000\000\000\007\148\000\000\000\000\007\148\000\000\000\000X\"\007D\000\000\007*\n\182\000\000\000\000\t\004-\192\000\000\000\000\000\000\000\000\004\014\000\000\000\000T\154\000\000\000\000\017N\000\000\000\000\000\000S\222\000\000\015\248\006\218\019\192\000\000\016P\000\000T,\000\000\000\000\006\208\000\000\000\000\000\000.0\000\000\005l\006\132\020(\000\000\016P\000\000\000\012\000\000\000\000\000\000\000\000\000\000\000\000\016.\002\176\000\\\015X\006\190\014P\000\000\005\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0144\000\147\015r\000\000\001p\006,\015\014\n\194\000\000\000\000\005\246\001D\004B\000\000\000\000\000\000\000\000\0034\007\148\000\000g\134\000\000\000\000]f\004\014\000\000W\234\000\000\000\000j\024\000\000\t\004%\012\000\0008\152\000\000\000\000[\"\004\014\000\000Br\000\000\001\178\000\000\000\000\000\000\004\014\000\000\000\000\n\144\004\002\007\146\000\000\000\000\016F\004v\005l\000\000\000\000\000\000\000\000\000\006\006,\tH\017h\0142\000\000\000\000\002\028\006\202\003\250\000\000\000\000\000\000\000\000\007\148\000\000\031h\000\000\001\b\000\000\000\000\000\000#\172\000\0005\146\000\000\000\000\000\000\000\000\000\000\000\000\002d\000\000\000\000\000\000\003.\025\236\000\000\000\000\000\000\000\000\000\000\001\"\025\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\000\000XF\000\000\004\014\000\000\022\156\000\000\000\000\000\000\000W\000\000\000\000\000\000\001R\000\000\000\000\000\000\000@\000\000\0034\000\000\002V\000\000\007\148\000\000\002\250\000\000\000\000\000\000,\130\015\162\000\000\000\000\002\140\000\000\000\000\000\000\002\014\000m\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005$\000\000\003\006\000\000\000\000\000\000\000\000\005\b\006\176Y\210$\130\000\000\000\000\000\186\017\164\000\000\000\000\000\000\000][\000\000\000\000\000\000\000\000\000" + "\005z\000\185\t\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\024\000\000\000\000\011\"\006B\001\156\014^\n\196\t\154\027\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\246\000\000\000\000\000\000\000\000\000\000\016\028\000\000\000\000\000\000\016B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\254\000\000\000\000\000\000\016\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000P^\0012\002\238\"\128\000\000G2\000\000\000\000\000\000\004\1702R\004\018\t\160\001\210\000\000\000\000\000\000\n\b\000\000\000\000\000\252\000\000\000\000\000\000\000\000\t\164\000\000\t\\\000\000\000\000\000\000\000\000\000\000\002\\\000\000\003\152\015\194\tH\000\000\000\000\011\162\000\000\011\012P^\000\000\000\000\028JM\156\rT\011\188\"\128\000\000/\020\000\000\000\000\t\206\t\146\000\000\000\000\nV\007\"\000\000\014N\n\140\004^\005\236\006H\015\194\015\234\011\170\b\158\000)\r\"\011\2120.\000\000\000\000\016\014c \000\000\n\182P^\n\228\007r\"\128\006t\000\000\000\000\000\000\b\200\002\014\000\000\bX\000\000j\212\b\014\005\230\007pC\150\000\000\000\000\000\000\000\000`\230\016\200\000\0003*\006\192\000\000\003\"B8\006d\000\000\000\000\0066\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\000\182\000\000\000\000\000\000e\194\006\204\012\206\000\000\002\150\001\017\000\000\000\000\000\000cJ\000\000\000\000\015\186a\206\000\000\000\000\000\000\000\000\000\000\002b\000\000\000\000\007\170-x\000\000B~\007\170\005\136\000\000\000\000\000\000/\244\000\000-\194\007\170\007\170\007\170\000\000\000\000\0168\000\000\000\000\002b\000\000\016B\000\000]x\002b\000\000h\210\000\000\002ba:\002b\000\000i\172\000\000\000\000\000\000\000\000\000\000\000\000:\130\000\000\t\204\016\248\000\000#x\tVd\146\000\000\000\000\014\184\000\000\000\000\000\000\002b\000\000\000\000\000\000.~\000\000\000\000\000\000\000\000\000\000\000\000\003:\017\006\000\000\000\000\000\000\002b\000\0007r\000\000\000\000\000\000Z\198\002b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\232\000\000\000\003\000\189\000\186\000\000\000\000\000\000\nx\000\148\000\002\006t\000\000\b8\006\210\019\252\000\000\b\236\002\238\000\003\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003D\000\000\000\000Hf\000\000d\b\003\226\000\000Z\226\002b[ \002b\000\000\003\150\0005\000\000\026f\b\236\026\198\b\236\000\000\000\000\004^\000\000\000\000\000\000\000\000\000\000\000\000E\188\b\236\000\000\000\197\000\000\000\000\t\240\000\000\000\000\000\000\007\246\000\000\000\000\b\236\000\000\006\210A\030\b\236\b\236\000\000\000\000\000\000)\0200b\000\000\002\004\000\000\000\000\000\000\b\160b\182\002b\b\216B\168\b\234\006\006j\148\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007J\000\000\000\000\000\000\000\000\n\2429\142\000\000\000\000f(\000\0009\"\000\000\000\000\000\000]\148\002b\000\000\000\000g\236\000\000\000\000\000\000\000\000\n\254\t0;\162dH\000\000\000\000g\134\000\000=\140\000\000\000\000\015\204\000\000\000\000\000\0007\254\000\000\000\000\000\000\\\144\002b\000\000\000\000g\220\000\000\000\000\015\204@8\000\000\015\204<\1801\232\r\254\014\022\000\000\000\000hj\000\000\000\000\000\000\015\204\000\000\000\000A\020\000\000\000\000\000\000\000\000]\216\002b\000\000\000\000if\000\000\000\000\015\204V\214\000\000\002b\000\000\000\0007\240\000\000\015\204\004\172\000\000\000\000\015\204\015\204\000\000\015\204\000\000\000\000\015\204\000\000\000\0000b\000\000\000\000\000\000\000\000\015\2044>\000\000\000\000\015\204\000\000\000\251\015,\000\000\000\000\000\000\000\000\000\000\000\000\000\000h0\000\000\000\000\015\204\000\000B\190\000\000\000\000\000\000_\140\002b\000\000\000\000j\"\000\000\000\000\015\204\015\204\000\000\\\b\002b\000\000\001z\001\180\011\246\012H\000\000\000\000\012\220(\138\000\000\000\000\014\206\012.\006\128\000\000\000\000\000\000\000\000\021\030,l\015\030\012\192+l\027\130j\212?^\000\000ST\029\170\000\000\000\000\000\000X\170\002b\000\000:\152\000\000\000\000\000\000[\244\002b\000\000\000\000h\252\000\000\000\000\000\000\015\2549\016\000\000\015\204\000\000\000\000\000\000\000\000@\002\000\000\000\000\000\000a\248\002b\000\000\000\000i\200\000\000\000\000\015\254\000\000\024\000\000\005\132\000\000R,\000\000\\\240\002b\000\000\002b\000\000\000\000\000\000\000\000\004\248\016\252(\202\004(\004\244\000\146\000\000\016R\003\166\015\020\b$\000\000\000\000\005,\003\1746\0188\250\016\184\b\bH\202\025`\000\000\001\190\001\188$\244\001\172\003\138\000|j\202\000\000\000\000\000\000\000\000\000\000\rn\016\130\000\000\000\000\000\000\001\"\001\\\001\184\001\022\000\198\006\210\002\210\000\000\004\152\005,\000\000\004\152\000\000\000\000\011\230\b\236\000\000\000\000\000\000\000\000\000\000\000\000\004\152\005R\000\000\b\236\000\000\000\000\000\000\029\170\000\000Y\160\002b$4V\028\000\000jr\000\000\000\000\238\015\204%f\015\208\r\148k\202\000\000\000\000\000\000\000\000\000\000RX\016\014\r\226\012\"\000\000\000\000\012\150\000\000\000\000\000\000\017p\000\000\000\000\000\000\000\000\000\000\000\000 L\000\000L\226\000\000\000\000?(\016\"\014\018\r\212\000\000AJ\000\000\000\000L\238\000\000\000\000\017~\000\000\000\000\000\000k\128\000\000\016(\n\200\029d\000\0003|\000\000'\216\000\000\015\236$\136\000\000\000\000\016NS\224\016,\nR\021P\000\000\016NI\018\016.\n2\016B\000\000\016N\000\000k\214\000\000Tf\0164\t\254\014\168\000\000\016N.,\012\2485`\000\000\000\000Gj\016B\t\138\023*\000\000\016NJZ\016L\014P\027\204\000\000\016NH>\r\144\014\142\r\132\000\000\016NK\162\016N\014\178\020.\000\000\016NO\226\016P\014\192\021\188\000\000\016NL\186\012\208\014\198\026$\000\000\016NK\246\012\166\014\230\019D\000\000\016NE\246\012D\014\250\021\200\000\000\016NI\138\011\184\015\004\030\244\000\000\016NJ\254\016\\\015&\024\178\000\000\016NN\174\016^\015(\012r\000\000\016NQ\014\n\\\015.\020\178\000\000\016NS\136\t\234\0156\019\194\000\000\016NO\n\016f\0158\031\216\000\000\016NER\t\158\015D\030(\000\000\016ND\226\016h\015F\027\236\000\000\016NQ\138\016p\015\150\017\204\000\000\016ND\174\b\004\015\174\015\134\000\000\016NDV\000\000\000\000\017\208\000\000\000\000\000\000\td\000\000\016z\015\208\014b\000\000\016NE\224\016|\015\216\028\152\000\000\016N\015\220\023|-|$$\000\000Ud\000P\000\000Z\136\002b'\024\000\000\000\000Z*\002b&f\000\000\000\0001\210\000\000\000\000\000!\000\000\000\000/\160\000\000\000\000\000\000\000\000Y\004\002b$\144\000\000\015\254/X\000\0007.\000\000\000\000\000\000\000\000X\232\002b\000\000\000\000\007\202\000\000\000\000\015\254:\180\000\000\015\204\004R\000\000\000\000\000\000\002\150\003\224\000\000\000\000\000\000\016N\016N6`\000\000\000\000\000\000\000\000%4\001~\000\216\016\170\000\000\016N>d\000\000\000\000\000\000I\212\001\150\rv \132\000\000\016N9\002\000\000\000\000\000\000P\178\002\022\004H\025\014\000\000\016N\001V,\030\000\000\000\000\000\000G\020\002\172\0015\022\222\000\000\016N \168\000\000\000\000\000\000Q\128\003\014\004L\020\166\000\000\016N3\200\000\000\000\000\000\000M\218\003\144\007\204\027\016\000\000\016N\000\000\000\000C\178\000\000\000\000\000\000U\024\003\176\b\176\023\160\000\000\016N<\158\000\000\000\000\000\000FR\004\n\005\002\031:\000\000\016NA\208\000\000\000\000\000\000G*\r\186\t~\015\148\000\000\016N\000\000H\026\004d\nl\000\012\000\000\016N\000\000\023\002\000\000\000\000\016N\005\000\000\000\000\000!\164\000\000)\168\000\000\000\000\000\000\000\000\000\0002\216\000\000\000\0001>\000\000\000\000\000\000\000\000@\244\000\000\000\000=F\000\000\000\000>Z\000\000\000\000\000\000\0066\014\004\0186\000\000\016N\000\000\000\000*Z\000\000-\152\000\000\000\000\000\000\000\000\000\000E\160\006\168\r\012\026\168\000\000J\204\006\216\r\224\r\000\000\000\016N\016NR\200\015\250\rx\015\030\000\000\016N\000\000\000\0007j\000\000\000\0007\"\000\000\000\000K\234\000\000\000\000\016\016\000\000\000\000\000\000k\026\000\000\007N\005\210\015\016\000\000\016N\000\000\015\254\"\144\000\000\000\000!\128\000\000)6\000\000\000\000j\202\000\000\000\000\000\000D\006\000\000\000\000\000\000\000\000\004\214\000\000\000\000\000\000\000\000\016\232\000\000\000\000\000\000'&\019\020\023\002\000\000\000\000\001v\000\000\n\166\t\226\000\000\000C\000\000\000\000\000\000\000\000\000\000\rn\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tn\006\254\025\002\000\000\016N\000\000\016\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\176\r\000\025\134\000\000\000\000?\168\000\000\b\236\021\246\000\000\b\236?\n\b\236\016N\000\0005\214\000\000\b\236\b\014\000\000\b\236\020\026\b\236\000\000\000\000\004^\000\000\007T\007`\001\142\000\000\t\244\nN\012\170\n~\016J\024\b\b\236\007R\000\000\012\168\0110\011B\002x\b\026\004\152\026\006\000\000\b\236\t\b\004\152\012\178\011 \007\224\016\024\006~\012\160\011&\000\000\003`\000\000\000\000\005*\b\222\000\000\004\002\003`;(\015\2044\138\000\000\011d\000J\011\002\012$\t\162\004\152\000\000\011<\011\252\r\016\000\000\003\222\007\216\000\000\000\000\rnM\246\000\000\003P\0120\000\000\012x\000\000\012^\000\000\011\206\b\016\n\016\000\000\000\000\000\000\000\000\000\000\014\014\t\134\004&\000\000\000\000N\018\000\000d2\000\000\b\190\000\000\t\000\000\000\000\000\000\000\000\000\007\018\000\000\000\000\000\0005\166\007\170\000\000\007\170\006\"\000\000\000\000\000\000\000\000\t&\012\014\000\000\001\000\000\000\014\138\000\000\017\000\007\170\007\170\000\000D\002\007\170\007\170\tR\b\248\000\000\000\000\b\180e\022\rB\rN\011>\t@\011\198\000\000\011\150\000W\011\188\000\000\rV\015V\011\190\r\132\016J(\018\b\236\000\000\011\160\014\b\000\000\tt\000\000\tH\000\000\014\026\000\000*\144\bd\r\228\011\130\0140\000\000!\202\b,\014\b\000\000\000\000\000k\bZ\000\000\tf\000\000\030\170\b\236\tr\000\000\000\145\000\000\000\000\r\208\011\0140\216\007\170\000\000\r\240\n\144\006~\014\014\r\246\014\174\n\218\015l\000\000\014\b\000R\000\000\000\000\000\000\000\000\001\"\t\246\r\216^\236\002b\000\000\001!\t\248\014\160\000\000\000\000\000\000\000\000\000\000\000\000_\164\002b\000\000\n\182\015\002\000\000\000\000\000\000\000\000\000\000\000\000Q\210\n\194\000\000\nt\000\\\000\000\n:\n@\b2\000\000\001\007V\144\000\000\000\023\000\000b\140\002b\002b\000\000\000\000\007F\000\000\007\214\000\000\004\232\007F\005 \000\000\nHVj\002b\\\172\002b\n\152\000\000\000\000\000\000\000\000\n\028\000\000\000\000\001\152\000\000\006$\014\184\nn\015\200\014\030\000\000\000\000\003\144\007F\014\246\000\000\000\000\n\198\016\n\014\016\000\000\000\000^\232\000\000)\190\000\000_H\bT\002b\000\000^`%\184\000\000^\164\000\000\000\000\000\000\007F\000\000\000\000\000\186\014<\011\030\015>\r\206\000\000\000\000^\000\011T\r\190\000\000\000\000\000\000G\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011|\000\000\r\254\011\128\b\206\000\000\016h\015\182\n\246\r\216\000\000\000\000\015\162\rH\003\184\000\000\000\000\n\144B8\005\248\000\000\000\000\000\000\000\000\000\000\n\006\015\158\011\196\000\000\r2\n\006\000\000\016n\011\230\r\028\000\000\000\000\000\000\002b\002\214\002\174\005\180\000\000\000\000\000\000\000\000\012\186\t\n\000\000\006\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002b\015v\011\214\014\n\012~\000\000b65\014\017\154\011\218\011\196\002l\000c\b\128\012\212\000\000\000\000C4J\200\015`\000\000`\160\002b2|\000\000\000\000+\200\000\000\000\000\tx\000\000\006<\000\000\000\000\000\000\000\000\000\000\000\000\029\252\000\000\000\000:\006I>\011\248\000\000\\R\002b+L\000\000\000\000)\136\000\000\000\000\tL'\202\007\166\000\000\012\178\0128\r\004\bH\012R\002\136\012~\015\252\023\236\0070\000\000\012\182\007j\000\156\000\000\023T.\170\000\000\0076\000\000\012\20824W\240\018r\014\230\006*\000\000\004\162\023\002\000\000\n\014\000\000\000\000\n\014\000\000\000\000\n\014\t:\000\000\0250\n\014\n\162\0162\012\200\000\000\n\014\000\000\000\000X`\000\000\000\000\000\000\n\014\000\000\000\000\003\226\000\000\004\252\002X\004\214\000\000\006\224U~\012\240\000\000\000\000\000\000\000\000\005\192\000\000\000\000\002t\000\000\n\014\006\002\000\000\000\199\n\014(6\000\000\r\022\015\236\r\006\017\n\tF\000\000\000\003\004\246\016\002\000\000\000\000\000\000dJ\t\020\006\138\000\146\025v\r,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\236\rh\000\000\0164\000\000\000\000\000\000\000\000\rPe@\000\000\000\000\000\000\015\236\000\000\000\000\000\000\000\000\000\000&\202\000\000\000\000\000\000\000\000\000\000\000\000\015r\rD\022@\000\000\016N\000\000\000\000\000\000\000\000\000\000\007j\005~\t\240\004\152\000\000Cn\000\000\b\236\000\000\001b\000\000\000\000\000\000\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000*\168\000\000\r\140\000\000\001\248\000\000\000\000\000\000\000\000\000\000\000\000`|\002b\000\000\bv\"Z\000\000\000\000\"z\000\000\000\000\000\000\000\000\r\168e\188\000\000\000\000\000\000\000\000\b\236\000\000\000\000\b\236\000\000\000\000W\128\0058\000\000\005\012\003|\000\000\000\000\007\170.\210\000\000\000\000\000\000\000\000\002b\000\000\000\000O\174\000\000\000\000\007\210\000\000\000\000\000\0000n\000\000\016\030\011\170\012\022\000\000\016N\000\000Lb\000\000\000\000\006\254\000\000\000\000\000\000\028\162\000\000\005\142\014\020\018\182\000\000\016N\000\000\030H\000\000\000\000\000\000\000\000\000\000\000\000\006\006\004D\012\246\015\158\006T\005\b\000\000\004\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\186\000\147\nN\000\000\004T\006<\b\004\b\148\000\000\000\000\005>\003\228\007\"\000\000\000\000\000\000\000\000\004\152\b\236\000\000f\242\000\000\000\000[~\002b\000\000\0148\000\000\000\000f\214\000\000\007\170 6\000\000f\218\000\000\000\000]\188\002b\000\000f\134\000\000\002\226\000\000\000\000\000\000\002b\000\000\000\000\t\196\004.\007\006\000\000\000\000\016|\0062\004|\000\000\000\000\000\000\000\000\003\002\006<\n@\b\196\004\242\000\000\000\000\003`\004@\004`\000\000\000\000\000\000\000\000\b\236\000\000e\234\000\000\001:\000\000\000\000\000\000-\226\000\000-,\000\000\000\000\000\000\000\000\000\000\000\000+\028\000\000\000\000\000\000\002\200\027\130\000\000\000\000\000\000\000\000\000\000\001\014\027\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Y\000\000\000\000\000\000U\252\000\000\002b\000\000\018\014\000\000\000\000\000\000\001\162\000\000\000\000\000\000\000\177\000\000\000\000\000\000\000@\000\000\004\152\000\000\002V\000\000\b\236\000\000\001f\000\000\000\000\000\000#\144\015\204\000\000\000\000\002\188\000\000\000\000\000\000\003\210\000\154\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Z\130\000\000\002\004\000\000\000\000\000\000\000\000\005\b\006\176X\014Z\018\000\000\000\000\001BYf\000\000\000\000\000\000\000\158W\152\000\000\000\000\000\000\000\000" let[@inline] goto_displacement = fun i -> MenhirLib.PackedIntArray.get16 goto_displacement i let goto_data = - "\007\176\005\182\002\236\002\237\001\209\001p\000\239\001\130\004G\005d\001\134\001\135\000\246\000\249\004v\001\209\004V\003t\007\177\007\198\002I\007\184\001\208\001\209\001\130\007\251\003z\001\134\001\135\001\208\001\209\007\185\007\199\b\163\t\001\002\237\001\209\001\130\000<\004y\001\134\002q\001\210\003H\007\163\000\239\001\212\001\213\001\194\001\210\001\242\000\246\000\249\001\212\001\213\003\143\b\223\007\176\005\190\002\236\002\237\001\209\001o\006\005\007\186\001\136\001\134\000\152\007\202\007m\000\157\001\180\bL\006\142\003t\007\177\007\198\001H\007\184\000\152\001\247\001\128\001\148\003z\002\236\002\237\001\209\006\143\007\185\007\199\004W\006\144\001\130\007\176\b\224\001\134\001\135\001\248\003%\007\187\000\246\001\151\006^\004\189\003\159\007o\001\134\001\135\005l\007\188\t\026\001\155\003\143\001r\007\184\001\159\002\240\000\246\003p\001\134\002\251\007\186\007p\001\217\007\185\007\202\001\006\007r\007\189\b\231\001\246\007}\b\252\005`\007\203\001\218\002\253\001v\001\134\000\253\000\239\bb\001\218\001\237\004\221\001\134\000\246\001\b\t\002\007\204\003p\001\134\000\152\003y\007\181\000\157\007\187\007\186\000\254\007\144\001\160\003\159\007\192\007\253\002\247\b\232\007\188\007\194\003\n\b\203\b\211\001\134\000\129\002\240\003\164\003p\001\134\003\165\004y\001\251\007\196\001\252\002\230\000\239\003q\007\189\002\239\000\158\005\254\000\246\000\249\007\203\007\187\001\161\003\179\006\012\001\237\003s\002\240\007\197\003p\001\134\007\188\001\235\006\005\000\254\007\204\001\134\000\255\001H\001\235\001:\b\177\001\236\bi\001\237\001\216\004y\003\181\007\192\002\012\007\209\001\237\001\216\007\194\004y\007\176\007\172\002\236\002\237\001\209\003\164\001;\004\134\003\165\001H\003\011\007\196\001Q\bl\004y\003q\001\161\003t\007\177\007\198\001X\007\184\001\n\t\021\006\142\003\179\003z\001\237\003s\007\192\007\197\007\185\007\199\003\b\007\194\bT\006\025\004\144\006\143\001\011\003q\b\227\006\149\bM\002\233\000\246\001\b\007\196\002\250\003\181\003r\007t\001\237\003s\001\001\003\143\b\212\007\176\001\237\002\236\002\237\001\209\b\176\001\215\007\186\001\173\007\197\001\141\007\202\001\n\004{\t\004\t\005\001@\003t\t\007\001[\004y\007\184\b\228\004\154\001\169\001\134\003z\000\239\005\161\001\011\000\246\007\185\t\t\000\246\000\249\000\246\001\b\001\130\000\239\003\b\001\134\001\135\007\187\006\214\000\246\001\b\001\015\003\159\b\204\001\016\001\191\006\166\007\188\001\017\001\018\003\143\001\174\006\018\007\150\002\240\005\238\003p\001\134\001H\007\186\b\247\002\237\001\209\b\\\b]\b\165\007\189\006\215\b\189\006\216\005k\001\209\007\203\001\194\006\021\006\162\b^\b_\000\239\001\167\001\014\001z\001\134\007\153\000\246\000\249\005\157\007\204\001\015\b`\006\025\001\016\0079\006\164\007\187\001\017\001\018\001L\003\t\003\159\007\192\007\155\006\217\006\138\007\188\007\194\007;\b\235\b\139\005\251\005\253\002\240\003\164\003p\001\134\003\165\006\165\000\152\007\196\000\162\001\148\001\022\003q\007\189\001%\b\002\t\012\002\236\002\237\001\209\007\156\b\249\003\179\bX\001\237\003s\006\218\007\197\001|\004\135\007\168\b\236\003t\b\196\007\204\006\142\006\219\006\220\001\155\006\221\007\205\003z\001\159\006\252\000\246\005\238\003\181\007\192\005y\006\143\004y\003\t\007\194\006\150\007\176\006$\002\236\002\237\001\209\003\164\001\216\000\246\003\165\007\027\005\216\007\196\003p\001\134\001H\003q\003\143\003t\007\177\007\198\004y\007\184\004\165\bP\b\239\003\179\003z\001\237\003s\0008\007\197\007\185\007\199\001\160\0063\000\152\006\223\b\191\000\161\001\161\000\246\006\225\006\235\004y\007\017\005\251\005\253\001H\001H\003\181\000\152\001\162\b\157\001\148\007\023\003\143\b\240\007\176\b\197\002\236\002\237\001\209\003\b\b\r\007\186\003\159\001\155\004z\b\020\b\006\001\159\001\143\000\246\007\024\003t\007\177\007\198\002\240\007\184\003p\001\134\b\\\b]\003z\005\214\002\237\001\209\002\248\007\185\007\199\000\242\t\n\b\198\007\153\b^\b_\000\246\b\205\000\246\007\187\007\003\007\004\004\250\005\191\003\159\001\134\001\135\b`\006\025\007\188\003\161\007\155\003\143\004\175\005\208\001\160\002\240\007c\003p\001\134\001\134\007\186\007\012\0008\006M\007\207\007\r\006\025\007\189\000\152\000\239\000\192\001\148\b\147\007\203\004Y\000\246\001\b\003\165\004Z\007\156\b\206\004y\005\005\004\197\003q\005\223\002\237\001\209\007\204\005\238\000\152\004y\bd\001\148\003\179\007\187\001\237\003s\001H\005\190\003\159\007\192\002\236\002\237\001\209\007\188\007\194\002\236\002\237\001\209\b\207\004\207\002\240\003\164\003p\001\134\003\165\004y\003\181\007\196\004y\006K\003t\003q\007\189\002\211\004\228\001z\003\t\b\208\007\203\003z\002\253\003\179\b\152\001\237\003s\005\216\007\197\003p\001\134\004\139\005\252\005\251\005\253\007\204\002\253\001\158\0008\007q\006\159\007\176\b\167\002\236\002\237\001\209\t\024\003\181\007\192\007[\003\143\002\254\006s\007\194\003\n\004y\t\016\001\134\003t\t\017\003\164\001z\007\184\003\165\004y\003\012\007\196\003z\003\n\006\162\003q\001\134\007\185\t\025\001|\005\225\b\154\b\022\bm\001x\003\179\b\017\001\237\003s\001\155\007\197\b\149\006\164\001\159\005\216\000\246\003p\001\134\000\130\002\239\005_\003\143\005\187\007\176\003\159\002\236\002\237\001\209\004\145\003\181\007\186\002\240\000\139\003p\001\134\006\165\002\240\bZ\003p\001\134\003t\007\177\b\185\001|\007\184\002\253\007\234\003\011\004y\003z\b[\006\151\001\021\001\155\007\185\007\199\005\194\001\159\001\160\000\246\007\173\003\011\b\155\b\156\001\161\007\187\000\239\0008\005\197\003\161\003\159\004\231\000\246\000\249\003\001\007\188\001\162\003\n\003\143\005\190\001\134\004y\002\240\002\231\003p\001\134\004\217\007\186\007\r\006\025\001H\0020\001\209\004y\007\189\006\005\t\029\004~\001\134\003q\001H\000\254\001\160\001\130\003q\002\222\001\134\001\135\001\161\003r\004\224\001\237\003s\005\190\003\179\007\204\001\237\003s\000\239\006\168\001\162\006I\007\187\bf\000\246\001\b\006\145\003\159\007\192\002\236\002\237\001\209\007\188\007\194\002\236\002\237\001\209\002\208\003\181\002\240\003\164\003p\001\134\003\165\005`\003\011\007\196\000\250\bk\003t\003q\007\189\b\153\004\228\005\203\001H\001\007\007\203\003z\004\236\003\179\004y\001\237\003s\bY\007\197\002\203\000\152\005*\006\238\001\148\006\147\007\204\006\b\001\134\001\237\004\229\001H\007\176\006K\002\236\002\237\001\209\004\155\003\181\007\192\b\154\003\143\b\187\004y\007\194\001\n\004\176\t\016\006\145\003t\t\017\003\164\bZ\007\184\003\165\bE\004y\007\196\003z\004y\b?\003q\001\011\007\185\t\020\b[\002\234\006\133\000\246\001\b\001\134\003\179\006E\001\237\003s\001\134\007\197\001\130\004V\001\130\001\134\002q\001\134\002q\002\253\002\239\006\176\003\143\007@\007\176\003\159\002\236\002\237\001\209\000\137\003\181\007\186\002\240\005\007\003p\001\134\b\166\002\240\001\176\003p\001\134\003t\007\177\bn\001H\007\184\007m\000:\005\160\007\154\003z\003\n\000\239\001H\001\134\007\185\007\199\005\023\000\246\001\b\007\176\001\015\006R\004\208\001\016\007\149\007\187\005\238\001\017\001\018\003\161\003\159\004\231\001H\002\253\001\177\007\188\005\238\007\177\003\143\000\232\007\184\007o\002\240\bF\003p\001\134\005a\007\186\007D\006\005\007\185\b\n\001\134\006\020\007\189\006\145\t\023\004~\007p\003q\001H\002r\005\176\007r\003q\003\n\004y\007\143\001\134\003r\0053\001\237\003s\0008\003\179\007\204\001\237\003s\003\011\006\243\005\251\005\253\007\187\007\186\006V\006\025\b7\003\159\007\192\007\t\005\251\005\253\007\188\007\194\001H\004y\001\154\0059\003\181\002\240\003\164\003p\001\134\003\165\004y\004y\007\196\000\239\b\155\b\156\003q\007\189\004y\000\246\000\249\001H\004y\007\203\007\187\002\253\003\179\007\228\001\237\003s\000\239\007\197\b \bV\007\188\001\237\000\246\000\249\007\204\003\011\007\r\006\025\007\022\006?\007\176\b\030\002\236\002\237\001\209\001\197\003\181\007\192\000\254\007\189\005\181\000\255\007\194\003\n\001M\b\018\001\134\003t\007\177\003\164\001H\007\184\003\165\000r\001\209\007\196\003z\006 \0069\003q\007\191\007\185\b\016\000\246\001z\001O\006\142\b\148\006-\003\179\006\136\001\237\003s\007\192\007\197\007T\006\214\002d\007\194\005\215\006\143\001\172\001\204\006\142\006\167\003\143\000\254\000\246\002\253\000\255\001H\007\196\001\130\003\181\007\186\001\134\002q\006\143\0008\004=\005\238\006\175\000\239\001H\001\154\006\215\007\026\006\216\000\246\000\249\007\197\003\011\002D\001\001\000\222\002\253\000\152\005\156\006\228\001\148\003\n\001|\005:\001\134\003\015\006\252\001\029\001\200\001\n\007\187\002\253\001\155\001@\001\154\003\159\001\159\005V\000\246\001\130\007\188\006\217\001\134\002q\001\154\005\207\001\011\002\240\003\n\003p\001\134\001\134\000\246\001\b\005\249\005\251\005\253\000\197\007\179\007\189\bq\000\254\001\001\003\n\000\255\b\019\001\134\002\236\002\237\001\209\004\166\007m\001H\006\249\006\025\006\218\004)\001\n\005\235\006\025\007\204\001\160\007\147\007h\001\028\006\219\006\220\001\161\006\221\003\011\000\239\003\132\000\254\007\192\001\011\001H\000\246\001\b\007\194\001\162\000\246\001\b\001\014\005\212\001\209\003\164\005v\007o\003\165\006\252\001\015\007\196\007\027\001\016\005\159\003q\003\011\001\017\001\018\006\190\007j\004\186\005\254\000\254\007p\003\179\000\255\001\237\003s\007r\007\197\003\011\007\157\007s\000\239\007\170\001\001\007\003\007\004\006\223\000\246\001\b\001H\001\022\006\225\006\235\001%\005\172\001H\003\181\001\014\001\n\b\160\005b\001H\004\005\0008\007\023\001\015\007\020\004y\001\016\007\153\007\r\006\025\001\017\001\018\007\028\001\011\002\239\0008\006\252\002\253\005\185\000\246\001\b\007\024\004y\001H\007~\007\155\002\240\001\n\003p\001\134\000\254\001H\004y\000\255\000\155\000>\001\022\001H\001H\001%\002\217\007\169\005\211\001\001\001\011\007{\007\230\004\"\001\134\003\n\000\246\001\b\001\134\006\237\007\156\005u\007\127\005\229\001\n\006\255\007\140\007*\007&\005\132\001H\007\003\007\004\004y\007\031\001\014\000\254\007u\001H\000\255\004\016\001\011\005\224\001\015\006\252\007\015\001\016\000\246\001\b\005\171\001\017\001\018\007\005\007\021\005\164\000\254\001H\007\r\006\025\007:\003q\006\251\001H\004y\001z\005\166\005\193\006\023\002\212\006J\003r\001\001\001\237\003s\001\015\000\177\001\022\001\016\001H\001%\001H\001\017\001\018\003\011\006\252\006\001\001\n\b\144\001I\004\218\004\n\001H\003\207\007\003\007\004\001H\004\185\001\014\000\254\001H\001H\000\255\005\192\001\011\006\203\001\015\001H\006\002\001\016\000\246\001\b\001\001\001\017\001\018\007\005\007\021\004y\001H\001G\007\r\006\025\001|\006Z\005\189\001\178\006d\001\n\b\146\000\209\000\140\004\225\001\155\006\146\001H\006~\001\159\006\132\000\246\001\022\001H\001H\001%\004y\001\011\007t\001\n\006\252\001H\003\184\000\246\001\b\006\153\007\248\001\239\005\205\007\003\007\004\005\210\000;\001\014\001H\001H\001\011\006\128\001H\000\186\000\190\001\015\000\246\001\b\001\016\b\"\000\216\001\001\001\017\001\018\007\005\007\021\007H\0008\001\160\007\r\006\025\000\168\006\170\005\222\001\161\bh\001\n\004y\001H\006u\006\180\006j\001H\007\003\007\004\001H\001\162\001\014\001\022\001H\001H\001%\001H\001\011\b*\001\015\001H\005\228\001\016\000\246\001\b\006\163\001\017\001\018\007\005\007\021\0070\007'\001H\007\r\006\025\001H\001\208\001\209\001\015\007!\000A\001\016\001\208\001\209\004y\001\017\001\018\001H\003\169\001H\001H\004y\001\022\004y\007\030\001%\001\210\001\242\004y\001z\001\212\001\213\001\210\001\242\000\183\003\242\001\212\001\213\001H\007\003\007\004\b#\006\158\001\014\004y\001H\001H\001H\007\002\003\244\006\254\001\015\001\208\001\209\001\016\004\024\004y\001\247\001\017\001\018\b\142\b\143\006P\001\247\004y\007\r\006\025\b\179\006\205\002\236\002\237\001\209\001\210\001\242\001\248\003%\001\212\001\213\006\031\003\236\001\248\003%\001H\006#\001\022\006\211\001|\001%\000\210\001}\001H\007\000\bO\004\228\006F\003\170\001\155\006\227\003\155\006\224\001\159\006;\000\246\001\247\004y\000\254\001H\001\246\000\255\002y\006U\000\199\006/\001\246\003\230\007_\005[\004y\006\"\001\218\001\248\003%\001\134\001\208\001\209\001\218\006)\006\232\001\134\006\t\003y\006\030\000\176\001\003\001H\0064\003y\004y\006.\001H\001H\002\017\001+\001\210\001\242\001\160\004y\001\212\001\213\004y\001H\001\161\003\189\001\246\000\200\001H\001\251\004y\001\252\005\247\001H\002\016\001\251\001\162\001\252\001\218\004\000\006\230\001\134\001H\001H\002\239\005\245\001H\001\247\006%\003y\004y\006B\006\233\001\001\001H\001H\002\240\001H\003p\001\134\001\235\006!\001\208\001\209\001\248\003%\001\235\002g\001\n\004y\002\012\001H\001\237\001\216\001H\001\251\002\012\001\252\001\237\001\216\004y\006\024\001\210\001\242\004y\001\011\001\212\001\213\005\206\001\240\007\001\000\246\001\b\006\n\002p\007R\004\231\001\246\004y\001H\007\142\005\195\001\208\001\209\001H\004\012\001\235\003\218\007W\001\218\004y\001\130\001\134\001\247\001\134\002q\002\012\001H\001\237\001\216\003y\005\226\001\210\001\242\003q\0066\001\212\001\213\007\\\006A\001\248\003%\005\165\006<\003r\004y\001\237\003s\006@\001H\005\188\001\014\004y\007m\000\195\005%\001\251\007z\001\252\001\015\001z\005\183\001\016\001\247\004y\005\170\001\017\001\018\0013\007b\001H\001H\005\133\001\246\004y\004y\001H\001H\007\180\007\145\001\248\003%\001H\001\208\001\209\001\218\001\201\001\235\001\134\007o\001H\007\129\001\022\006\212\006\213\001%\003y\002\012\003 \001\237\001\216\003n\003#\001\210\001\242\006\206\007p\001\212\001\213\006T\001H\007r\004y\001\246\001H\007\130\007\141\001|\001\208\001\209\001\183\004y\001\251\007\252\001\252\001\218\005\025\001\155\001\134\001H\003)\001\159\003w\000\246\001\247\007\183\003y\006\\\001\210\001\242\000\223\001H\001\212\001\213\001H\007\166\007\193\002\193\001\209\007\219\001H\001\248\003%\001\235\006`\003\200\001\130\007\229\001H\001\134\002q\004\030\001\251\002\012\001\252\001\237\001\216\001\210\003\020\001\247\001H\001\212\001\213\001H\001H\003S\001\160\001\130\006h\003i\001\134\002q\001\161\007\200\001\246\005$\001\248\003%\007m\005\024\006\182\006o\b\162\001\235\001\162\006\177\001\218\002\145\006\172\001\134\003\139\005\b\001H\002\012\001H\001\237\001\216\003y\006z\007m\bW\004\198\001H\000\254\005>\002\151\000\255\006\171\bg\001\246\003\175\001H\000\189\001\130\007o\001K\001\134\002q\007\014\001H\003\195\001\218\006\181\001\251\001\134\001\252\006\178\006\207\003\201\002H\000@\007p\003y\000\194\003\213\007o\007r\001H\001\246\003\219\007\137\001H\003\225\003\231\006Y\007m\006\179\001H\003\237\007 \001\218\001H\007p\001\134\001\235\007,\006O\007r\001\251\002o\001\252\007\158\001H\001H\002\012\001\130\001\237\001\216\001\134\002q\001\208\001\209\001H\001H\006\234\003\154\003\243\003\249\001\001\005A\005F\007o\001H\006\231\001\208\001\209\002\152\001H\002\153\001\235\001\210\001\242\001H\001\n\001\212\001\213\003\255\007m\007p\002\012\001H\001\237\001\216\007r\001\210\001\242\001H\007v\001\212\001\213\001\011\001H\004\011\003\185\001H\001H\000\246\001\b\001\235\006*\001H\001\247\001\208\001\209\005\029\005\169\004\017\005\134\002\012\004\023\001\237\001\216\006(\007o\007\175\001\247\001\208\001\209\001\248\003%\004\029\004#\001\210\001\242\0047\bc\001\212\001\213\001H\001H\007p\007\218\001\248\003%\006\022\007r\001\210\001\242\004A\007y\001\212\001\213\002i\bR\006\250\005\030\0019\005\186\001H\000\254\005\174\001\246\000\255\001\247\001\015\b\151\007]\001\016\005}\004$\002x\001\017\001\018\001\218\001H\001\246\001\134\001\247\002B\005{\001\248\003%\007\174\003\031\003y\003\"\001H\001\218\001H\000\156\001\134\001H\001)\003(\001\248\003%\002\198\001\022\003y\002\236\002\237\001\209\001H\001H\0034\000]\001H\001H\003v\0031\001\251\007\195\001\252\001\246\003t\0037\0075\003O\003R\003^\001H\000a\002\150\003z\001\251\001\218\001\252\001\246\001\134\007\236\003h\001\250\003m\005#\001\001\005\028\003y\007\239\001(\001\218\003~\001\235\001\134\000e\000\235\001-\b0\003\138\b6\001\n\003y\002\012\003\143\001\237\001\216\001\235\003\148\004|\003\168\001\208\001\209\003\174\001\251\003\183\001\252\002\012\001\011\001\237\001\216\003\194\001C\003\206\000\246\001\b\007\213\003\212\001\251\007\176\001\252\001\210\001\242\003\224\005\158\001\212\001\213\003\248\003\254\004\004\001z\002\216\001Z\004\022\t\016\001\235\000n\t\017\004\028\004(\007\184\b\161\000z\003\159\005;\002\012\0040\001\237\001\216\001\235\007\185\0046\001\247\001\208\001\209\002\240\004<\003p\001\134\002\012\003\178\001\237\001\216\000\000\001\014\000\000\000\000\000\000\000\000\001\248\003%\000\000\001\015\001\210\001\242\001\016\000\000\001\212\001\213\001\017\001\018\002\202\000\000\007\186\000\000\000\000\000\000\001|\003\161\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003x\001\155\000\000\000\000\000\000\001\159\001\246\000\246\001\247\001\022\004B\001\209\001%\000\000\000\000\000\000\000\000\003\164\001\218\000\000\003\165\001\134\007\187\000\000\000\000\001\248\003%\003q\000\000\003y\004\\\001\242\007\188\000\000\001\212\001\213\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\160\007\189\000\000\t\022\000\000\001\251\001\161\001\252\001\246\000\000\002\145\003\181\000\000\001\208\001\209\000\000\000\000\000\000\001\162\000\000\001\218\000\000\007\191\001\134\000\000\000\000\000\000\004a\002\151\000\000\000\000\003y\000\000\001\210\001\242\007\192\001\235\001\212\001\213\000\000\007\194\000\000\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\007\196\000\000\000\000\003\196\001\251\000\000\001\252\000\000\001\246\000\000\000\000\001\247\000\000\002\236\002\237\001\209\000\000\000\000\000\000\007\197\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\001\248\003%\000\000\000\000\000\000\000\000\000\000\001\235\000\000\005Z\000\000\001\208\001\209\000\000\000\000\000\000\005\\\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\004w\007\128\002\152\000\000\002\153\001\210\001\242\001\246\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\005]\005e\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\004\187\000\000\003y\000\000\000\000\000\000\001\235\000\000\001\247\000\000\000\000\001\208\001\209\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\001\248\003%\000\000\001\251\000\254\001\252\001\210\001\242\002\239\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\005h\000\000\003p\001\134\001\135\000\000\000\000\000\000\000\000\b8\000\000\000\000\000\000\001\246\001\235\000\000\000\000\001\247\001\208\001\209\000\000\004\228\000\000\000\000\002\012\001\218\001\237\001\216\001\134\000\000\000\000\000\000\001\208\001\209\001\248\003%\003y\000\000\001\210\001\242\000\000\005`\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\bG\001\251\000\000\001\252\000\000\000\000\001\246\003q\001\247\000\000\000\000\000\000\000\000\001\n\003\176\000\000\000\000\003r\001\218\001\237\003s\001\134\001\247\000\000\000\000\001\248\003%\000\000\000\000\003y\001\011\000\000\001\235\000\000\000\000\000\000\000\246\001\b\002\239\001\248\003%\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\001\251\000\000\001\252\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\001\209\001\218\000\000\001\246\001\134\000\000\000\000\001\130\000\000\000\000\001\134\002q\003y\000\000\000\000\001\218\000\000\001\235\001\134\001\210\001\242\004\230\000\000\001\212\001\213\001\015\003y\002\012\001\016\001\237\001\216\001z\001\017\001\018\000\000\000\000\000\000\000\000\001\251\007m\001\252\000\000\004\219\000\000\000\000\000\000\000\000\000\000\000\000\003q\001\247\000\000\001\251\000\000\001\252\000\000\000\000\000\000\006\016\003r\000\000\001\237\003s\000\000\000\000\001\208\001\209\001\248\003%\001\235\000\000\000\000\000\000\000\000\000\000\007o\000\000\000\000\000\000\002\012\000\000\001\237\001\216\001\235\000\000\001\210\001\242\000\000\001|\001\212\001\213\005\141\007p\002\012\000\000\001\237\001\216\007r\001\155\000\000\001\246\007\162\001\159\000\000\000\246\001\208\001\209\000\000\005\019\000\000\000\000\000\000\001\218\000\000\000\000\001\134\001\247\000\000\000\000\001\208\001\209\000\000\000\000\003y\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\001\248\003%\000\000\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\001\160\004\018\001\251\000\000\001\252\000\000\001\161\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\254\005w\000\000\000\255\001\162\001\246\000\000\000\000\000\000\001\247\000\000\000\000\001\248\003%\000\000\000\000\000\000\001\218\000\000\001\235\001\134\000\000\000\000\000\000\000\000\000\000\001\248\003%\003y\002\012\000\000\001\237\001\216\000\000\000\000\001D\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\003t\001\252\001\218\000\000\001\246\001\134\000\000\000\000\000\000\003z\000\000\000\000\000\000\003y\000\000\b\219\001\218\000\000\000\000\001\134\001\001\000\000\000\000\000\000\001\208\001\209\000\000\003y\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\n\000\000\000\000\003\143\001\251\002\012\001\252\001\237\001\216\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\001\011\001\251\000\000\001\252\000\000\000\000\000\246\001\b\000\000\000\000\000\000\b\221\000\000\000\000\000\000\007\220\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\001\235\000\000\000\000\003\159\000\000\000\000\001\208\001\209\001\248\003%\002\012\000\000\001\237\001\216\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\000\000\001\014\000\000\001\210\001\242\000\000\000\000\001\212\001\213\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001\246\000\000\000\000\000\000\000\000\001\208\001\209\003\161\0048\000\000\000\000\000\000\001\218\000\000\000\000\001\134\001\247\000\000\000\000\001\208\001\209\000\000\000\000\003y\001\022\001\210\001\242\001J\000\000\001\212\001\213\000\000\003\164\001\248\003%\003\165\000\000\000\000\000\000\001\210\001\242\000\000\003q\001\212\001\213\000\000\000\000\000\000\003T\001\251\000\000\001\252\003\179\000\000\001\237\003s\001\247\000\000\000\000\000\000\000\000\000\000\003\208\000\000\000\000\000\000\001\246\000\000\000\000\000\000\001\247\000\000\000\000\001\248\003%\000\000\003\181\000\000\001\218\000\000\001\235\001\134\000\000\000\000\000\000\000\000\000\000\001\248\003%\003y\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\001\252\001\218\000\000\001\246\001\134\000\000\000\000\001\208\001\209\000\000\000\000\000\000\003y\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\001\208\001\209\000\000\003y\001\210\001\242\001\235\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\001\251\002\012\001\252\001\237\001\216\001\210\001\242\000\000\000\000\001\212\001\213\000\000\003\250\000\000\001\251\000\000\001\252\001z\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\136\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\247\001\248\003%\004B\001\209\002\012\000\000\001\237\001\216\001\235\000\000\000\000\001\208\001\209\000\000\001z\000\000\001\248\003%\002\012\000\000\001\237\001\216\004\\\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\001\210\001\242\001\246\000\000\001\212\001\213\001|\000\000\000\000\005\151\002\236\002\237\001\209\000\000\001\218\000\000\001\155\001\134\001\246\000\000\001\159\002\145\000\246\003\202\000\000\003y\000\000\000\000\000\000\000\000\001\218\001\247\000\000\001\134\007\246\000\000\000\000\000\000\004a\002\151\001|\003y\000\000\005\153\000\000\000\000\000\000\000\000\001\248\003%\001\155\001\251\000\000\001\252\001\159\000\000\000\246\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\001\160\000\000\001\251\000\000\001\252\000\000\001\161\001\246\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\001\246\001\235\001\162\001\218\003z\000\000\001\134\000\000\000\000\000\000\005H\002\012\001\218\001\237\001\216\001\134\000\000\001\235\001\160\000\000\000\000\000\000\000\000\003y\001\161\000\000\000\000\002\012\000\000\001\237\001\216\002\239\000\000\003\143\001\208\001\209\001\162\004w\007\182\002\152\000\000\002\153\000\000\002\240\000\000\003p\001\134\001z\000\000\001\251\000\000\001\252\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000n\000\000\004\199\000\000\000\000\001\235\002\012\003\159\001\237\001\216\001\247\000\000\000\000\001\208\001\209\002\012\000\000\001\237\001\216\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\001\248\003%\001|\000\000\000\000\b\171\001\210\001\242\000\000\003q\001\212\001\213\001\155\000\000\000\000\000\000\001\159\000\000\000\246\003r\000\000\001\237\003s\000\000\000\000\003\161\000\000\000\000\000\000\003\220\000\000\000\000\000\000\001\246\000\000\000\000\000\000\001\247\001\208\001\209\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\003\164\000\000\000\000\003\165\001\248\003%\003y\000\000\001\210\001\242\003q\001\160\001\212\001\213\000\000\000\000\000\000\001\161\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\001\162\000\000\004\177\001\251\000\000\001\252\000\000\000\000\001\246\000\000\001\247\001z\001\208\001\209\000\000\003\181\000\000\000\000\001\208\001\209\001\218\000\000\000\000\001\134\000\000\000\000\000\000\001\248\003%\000\000\000\000\003y\001\210\001\242\001\235\001z\001\212\001\213\001\210\001\242\000\000\000\000\001\212\001\213\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\167\000\000\001\251\000\000\001\252\001\246\003\226\000\000\001\247\000\000\000\000\000\000\000\000\001|\001\247\000\000\001\153\001\218\000\000\000\000\001\134\000\000\000\000\001\155\000\000\001\248\003%\001\159\003y\000\246\000\000\001\248\003%\001\235\000\000\000\000\000\000\001|\000\000\000\000\001\166\000\000\000\000\002\012\000\000\001\237\001\216\001\155\000\000\000\000\000\000\001\159\000\000\000\246\001\251\000\000\001\252\000\000\001\246\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\001\208\001\209\001\218\000\000\001\160\001\134\000\000\000\000\001\218\000\000\001\161\001\134\000\000\003y\000\000\000\000\000\000\001\235\000\000\003y\001\210\001\242\001\162\000\000\001\212\001\213\000\000\002\012\001\160\001\237\001\216\000\000\000\000\000\000\001\161\000\000\000\000\000\000\000\000\001\251\000\000\001\252\000\000\003\214\000\000\001\251\001\162\001\252\000\000\000\000\000\000\001\247\000\000\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\003%\001\235\000\000\000\000\001\210\001\242\000\000\001\235\001\212\001\213\000\000\002\012\000\000\001\237\001\216\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\000\000\001\246\000\000\000\000\001\247\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\218\001\208\001\209\001\134\000\000\000\000\000\000\000\000\001\248\003%\000\000\003y\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\226\000\000\001\251\000\000\001\252\000\000\001\246\000\000\001\247\004>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\247\001\218\000\000\000\000\001\134\000\254\000\000\000\000\001\248\003%\004B\001\209\003y\000\000\000\000\000\000\001\235\001\248\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\004\\\001\242\000\000\000\000\001\212\001\213\000\000\000\000\001\251\000\000\001\252\001\246\000\000\000\000\000\000\000\000\000\000\004B\001\209\000\000\001\246\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\002\145\000\000\001\218\000\000\003y\001\134\000\000\004\\\001\242\001\235\000\000\001\212\001\213\003y\000\000\000\000\000\000\004a\002\151\002\012\000\000\001\237\001\216\000\000\001\208\001\209\000\000\000\000\000\000\000\000\001\251\000\000\001\252\000\000\000\000\001\n\000\000\002\145\000\000\001\251\000\000\001\252\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\001\246\001\011\000\000\004a\002\151\000\000\000\000\000\246\001\b\000\000\001\235\000\000\001\218\000\000\000\000\001\134\003\156\000\000\000\000\001\235\002\012\000\000\001\237\001\216\001\247\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\001\248\003%\000\000\000\000\000\000\004w\004x\002\152\001\218\002\153\000\000\001\134\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\003t\000\000\001\017\001\018\001\246\001\208\001\209\000\000\000\000\003z\001\235\001\208\001\209\004w\007^\002\152\001\218\002\153\000\000\001\134\002\012\000\000\001\237\001\216\000\000\001\210\001\242\003y\001\026\001\212\001\213\001\210\001\242\000\000\000\000\001\212\001\213\000\000\003\143\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\001\235\007\243\000\000\000\000\000\254\000\000\001\251\003\232\001\252\001\247\002\012\000\000\001\237\001\216\000\000\001\247\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\248\003%\000\000\000\000\000\000\000\000\001\248\003%\005\254\000\000\000\000\001\235\001\210\001\242\003\159\000\000\001\212\001\213\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\001\246\000\000\004\146\000\000\000\000\000\000\001\246\000\000\000\000\001\001\001\247\000\000\001\218\001\208\001\209\001\134\000\000\000\000\001\218\001\208\001\209\001\134\000\000\003y\001\n\000\000\003\161\001\248\003%\003y\000\000\000\000\000\000\001\210\001\242\001\n\000\000\001\212\001\213\001\210\001\242\001\011\000\000\001\212\001\213\000\000\000\000\000\246\001\b\001\251\000\000\001\252\001\011\000\000\005\144\001\251\004*\001\252\000\246\001\b\001\246\003q\005\t\005\154\001\247\000\000\000\000\000\000\000\000\000\000\001\247\003\179\001\218\001\237\003s\001\134\000\000\000\000\000\000\000\000\001\235\001\248\003%\003y\000\000\000\000\001\235\001\248\003%\000\000\002\012\000\000\001\237\001\216\000\000\003\181\002\012\b\174\001\237\001\216\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\001\251\001z\001\252\001\017\001\018\001\246\000\000\001\015\000\000\000\000\001\016\001\246\001\208\001\209\001\017\001\018\000\000\001\218\006\014\000\000\001\134\000\000\000\000\001\218\000\000\000\000\001\134\000\000\003y\001\022\000\000\001\235\001\210\001\242\003y\000\000\001\212\001\213\000\000\000\000\006\017\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\004\156\001\252\000\000\001|\000\000\001\251\006Q\001\252\001\247\000\000\000\000\000\000\000\000\001\155\000\000\000\000\000\000\001\159\000\000\000\246\000\000\000\000\000\000\000\000\000\000\001\248\003%\000\000\000\000\000\000\001\235\001\208\001\209\000\000\000\000\000\000\001\235\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\002\012\000\000\001\237\001\216\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\001\246\000\000\000\000\000\000\001\160\000\254\000\000\000\000\0016\000\000\001\161\000\000\001\218\001\208\001\209\001\134\003\238\000\000\000\000\001\208\001\209\000\000\001\162\003y\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\001\210\001\242\001\248\003%\001\212\001\213\000\000\000\000\000\000\000\000\001\251\000\000\001\252\000\000\000\000\000\000\000\000\003\140\000\000\000\000\000\000\000\000\000\000\004\006\000\000\001\247\000\000\000\000\000\000\000\000\000\000\001\247\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\001\235\001\248\003%\000\000\000\000\000\000\001\218\001\248\003%\001\134\002\012\000\000\001\237\001\216\000\000\001\n\000\000\003y\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\001\246\003t\000\000\000\000\000\246\001\b\001\246\000\000\000\000\001\251\003z\001\252\001\218\001\208\001\209\001\134\004\160\000\000\001\218\000\000\000\000\001\134\004Q\003y\000\000\000\000\000\000\000\000\000\000\003y\004T\000\000\000\000\001\210\003H\003I\000\000\001\212\001\213\003\143\001\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\002\012\001\252\001\237\001\216\000\000\001\251\000\000\001\252\000\000\000\000\000\000\003J\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\002\236\002\237\001\209\000\000\001\235\000\000\003\159\000\000\002\012\000\000\001\237\001\216\000\000\001\022\002\012\003t\001\237\001\216\002\240\000\000\003p\001\134\000\000\000\000\003z\002\236\002\237\001\209\000\000\000\000\007O\000\000\001\217\000\000\000\000\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\0044\000\000\003\161\000\000\003\143\002\236\002\237\001\209\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\000\003z\003\165\000\000\000\000\000\000\000\000\b\180\000\000\003q\000\000\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\003\159\004U\004[\001\248\003%\003\143\000\000\000\000\000\000\000\000\001\235\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\181\000\000\001\236\000\000\001\237\001\216\000\000\002\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\002\240\000\000\003p\001\134\002\236\002\237\001\209\000\000\003\161\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\003\159\000\000\003t\007\176\000\000\005\018\000\000\000\000\000\000\000\000\000\000\003z\002\240\000\000\003p\001\134\003\164\007\212\t\016\003\165\000\000\t\017\000\000\000\000\007\184\000\000\003q\000\000\001\208\001\209\000\000\001\251\000\000\001\252\007\185\000\000\003\179\000\000\001\237\003s\003\143\002\236\002\237\001\209\000\000\003\161\000\000\000\000\001\210\001\242\000\000\003q\001\212\001\213\000\000\000\000\003t\000\000\000\000\002A\003\181\003r\001\235\001\237\003s\003z\000\000\007\186\000\000\000\000\003\164\005=\002\012\003\165\001\237\001\216\000\000\000\000\000\000\001\247\003q\000\000\000\254\002\236\002\237\001\209\000\000\000\000\000\000\003\159\003\179\000\000\001\237\003s\003\143\000\000\001\248\002?\003t\000\000\000\000\002\240\007\187\003p\001\134\000\000\000\000\003z\000\000\000\000\000\000\b\129\007\188\0074\003\181\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\001\246\003t\007\189\000\000\t\018\003\161\000\000\003\143\000\000\003t\003z\000\000\001\218\000\000\003\159\001\134\005@\000\000\003z\000\000\000\000\000\000\000\000\007\191\005\201\000\000\002\240\000\000\003p\001\134\003\164\000\000\000\000\003\165\000\000\000\000\007\192\000\000\000\000\003\143\003q\007\194\000\000\001\n\000\000\000\000\000\000\003\143\000\000\001\251\003\179\001\252\001\237\003s\007\196\000\000\003\159\000\000\000\000\003\161\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\002\240\000\000\003p\001\134\000\000\007\197\003\181\000\000\000\000\000\254\000\000\000\000\001\235\000\000\000\000\000\000\003\164\000\000\000\000\003\165\003\159\000\000\002\012\000\000\001\237\001\216\003q\000\000\003\159\000\000\000\000\000\000\002\240\003\161\003p\001\134\003\179\000\000\001\237\003s\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\001:\001\015\000\000\003\164\001\016\003\181\003\165\000\000\001\017\001\018\003\161\000\000\000\000\003q\000\000\000\000\000\000\000\000\003\161\000\000\000\000\001;\000\000\003\179\000\000\001\237\003s\001S\002\236\002\237\001\209\000\000\000\000\000\000\001$\003\164\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\164\001\n\003q\003\165\003\181\000\000\000\000\000\000\000\000\005Z\003q\000\000\003\179\000\000\001\237\003s\005\\\000\000\001\011\000\000\003\179\000\000\001\237\003s\000\246\001\b\001\001\b'\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\003\181\000\000\001z\000\000\000\000\001\n\005]\005q\003\181\001@\003t\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\001\011\000\000\000\000\004K\003t\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\003z\000\000\002\236\002\237\001\209\000\000\004D\000\000\000\000\000\000\000\000\001\015\000\000\003\143\001\016\000\000\002\239\003t\001\017\001\018\000\000\000\000\000\000\000\000\001|\000\000\003z\br\005h\003\143\003p\001\134\001\135\000\000\001\155\000\000\000\000\000\000\001\159\000\000\000\246\000\000\000\000\001\014\b#\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\003\143\000\000\000\000\001\017\001\018\001L\000\000\003\159\000\000\000\000\000\000\000\000\000\000\000\000\005`\000\000\002\236\002\237\001\209\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\000\000\001\160\001\022\000\000\000\000\001%\000\000\001\161\002\240\000\000\003p\001\134\000\000\003\160\003q\002\236\002\237\001\209\000\000\001\162\000\000\000\000\003\159\000\000\003r\003\161\001\237\003s\000\000\000\000\003t\002\236\002\237\001\209\002\240\000\000\003p\001\134\000\000\003z\000\000\003\161\000\000\000\000\000\000\005\020\003t\002\236\002\237\001\209\003\164\000\000\000\000\003\165\000\000\003z\000\000\000\000\000\000\000\000\003q\007\244\003t\000\000\000\000\000\000\003\164\003\161\003\143\003\165\003\179\003z\001\237\003s\000\000\000\000\003q\004P\000\000\000\000\000\000\000\000\000\000\000\000\003\143\000\000\003\179\000\000\001\237\003s\000\000\002\239\004Y\000\000\003\181\003\165\005\011\000\000\000\000\000\000\003\143\000\000\003q\002\240\000\000\003p\001\134\000\000\000\000\000\000\003\181\000\000\003\179\000\000\001\237\003s\000\000\003\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\003\159\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\002\236\002\237\001\209\000\000\003t\002\236\002\237\001\209\002\240\003\161\003p\001\134\000\000\003z\000\000\000\000\000\000\000\000\003q\004c\003t\002\236\002\237\001\209\003\152\003\161\000\000\000\000\003r\003z\001\237\003s\000\000\000\000\003\164\b\t\003t\003\165\000\000\000\000\000\000\003\161\003\143\000\000\003q\003z\000\000\000\000\000\000\000\000\003\164\005\014\000\000\003\165\003\179\000\000\001\237\003s\003\143\000\000\003q\000\000\000\000\000\000\000\000\000\000\003\164\000\000\000\000\003\165\003\179\000\000\001\237\003s\003\143\000\000\003q\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\159\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\239\002\240\000\000\003p\001\134\003\159\000\000\000\000\003\181\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\002\240\003\161\003p\001\134\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\003t\000\000\000\000\000\000\000\000\003\161\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\003\164\007\211\000\000\003\165\000\000\000\000\003\134\003\161\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\003\164\000\000\000\000\003\165\003\179\003q\001\237\003s\003\143\000\000\003q\000\000\000\000\000\000\000\000\003r\003\164\001\237\003s\003\165\003\179\000\000\001\237\003s\000\000\000\000\003q\000\000\003\181\000\000\001\208\001\209\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\003\159\000\000\000\000\003\181\002K\002\236\002\237\001\209\000\000\000\000\000\000\002\239\002\240\000\000\003p\001\134\002\236\002\237\001\209\000\000\003t\000\000\000\000\002\240\001\247\003p\001\134\000\000\000\000\003z\000\000\003t\002\236\002\237\001\209\005\012\000\000\000\000\000\000\000\000\003z\001\248\002?\000\000\000\000\003\161\004\180\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\003\143\000\000\000\000\000\000\003\190\000\000\000\000\000\000\000\000\000\000\000\000\003\143\003\164\000\000\000\000\003\165\001\246\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\003\143\001\218\000\000\000\000\001\134\003\179\003q\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\001\237\003s\000\000\000\000\003\159\000\000\000\000\000\000\000\000\000\000\000\000\003\181\000\000\000\254\000\000\003\159\002\240\000\000\003p\001\134\001\251\000\000\001\252\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\001\030\002\240\000\000\003p\001\134\000\000\000\000\003\161\000\000\001\235\000\000\003t\000\000\000\000\002\236\002\237\001\209\000\000\003\161\002\012\003z\001\237\001\216\000\000\000\000\000\000\004S\000\000\000\000\003t\000\000\000\000\003\164\000\000\003\161\003\165\000\000\000\000\003z\000\000\000\000\000\000\003q\003\164\004\170\000\000\003\165\000\000\000\000\003\143\001\208\001\209\003\179\003q\001\237\003s\000\000\000\000\000\000\003\164\000\000\001\n\003\165\003\179\000\000\001\237\003s\003\143\000\000\003q\001\210\001\242\000\000\000\000\001\212\001\213\003\181\000\000\001\011\003\179\000\254\001\237\003s\006\194\000\246\001\b\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\159\000\000\000\000\001\247\000\000\003\181\000\000\002\236\002\237\001\209\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\159\000\000\001\248\b\243\003t\b\245\000\000\002\236\002\237\001\209\000\000\000\000\002\240\003z\003p\001\134\000\000\000\000\000\000\007\247\000\000\000\000\003t\000\000\000\000\000\000\001\015\003\161\000\000\001\016\000\000\003z\000\000\001\017\001\018\001\246\000\000\007S\000\000\000\000\000\000\000\000\003\143\001\208\001\209\003\161\000\000\001\218\000\000\000\000\001\134\000\000\003\164\000\000\001\n\003\165\000\000\000\000\000\000\001$\003\143\000\000\003q\001\210\001\242\000\000\000\000\001\212\001\213\000\000\003\164\001\011\003\179\003\165\001\237\003s\000\000\000\246\001\b\000\000\003q\000\000\000\000\000\000\001\251\000\000\001\252\000\000\000\000\000\000\003\179\003\159\001\237\003s\001\247\000\000\003\181\000\000\000\000\000\000\000\254\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\159\000\000\001\248\0039\000\000\003\181\001\235\002\236\002\237\001\209\000\000\000\000\002\240\000\000\003p\001\134\002\012\000\000\001\237\001\216\000\000\000\000\003t\000\000\000\000\000\000\001\015\003\161\000n\001\016\000\000\003z\000\000\001\017\001\018\001\246\000\000\003\191\000\000\002\236\002\237\001\209\000\000\000\000\000\000\003\161\000\000\001\218\000\000\000\000\001\134\000\000\003\164\000\000\000\000\003\165\000\000\000\000\000\000\001\022\003\143\000\000\003q\bC\002\236\002\237\001\209\000\000\000\000\000\000\003\164\000\000\003\179\003\165\001\237\003s\000\000\000\000\001z\003t\003q\001\n\000\000\000\000\001\251\000\000\001\252\000\000\003z\000\000\003\179\000\000\001\237\003s\004\245\000\000\003\181\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\000\000\b%\000\000\003\159\000\000\000\000\000\000\000\254\003\181\001\235\000\255\003\143\000\000\001:\000\000\002\240\000\000\003p\001\134\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\001|\000\000\000\000\0068\000\000\001;\002\239\000\000\000\000\000\000\001\155\001<\002\193\001\209\001\159\000\000\000\246\000\000\002\240\003\161\003p\001\134\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\003\159\001\210\003\020\001\017\001\018\001\212\001\213\000\000\000\000\000\000\000\000\000\000\002\240\003\164\003p\001\134\003\165\000\000\000\000\000\000\000\000\000\000\001\001\003q\000\000\000\000\000\000\000\000\001\160\b#\000\000\002\145\000\000\003\179\001\161\001\237\003s\001\n\000\000\000\000\000\000\001@\000\000\000\000\000\000\003\161\001\162\000\000\005>\002\151\000\000\002\236\002\237\001\209\001\011\003q\000\000\003\181\000\000\000\000\000\246\001\b\000\000\000\000\000\000\003r\003t\001\237\003s\000\000\003\164\000\000\000\000\003\165\000\000\003z\000\000\000\000\001\208\001\209\003q\0077\001\246\000\000\000\000\000\000\000\254\000\000\000\000\006\187\003\179\000\000\001\237\003s\001\218\000\000\000\000\001\134\001\210\001\242\000\000\000\000\001\212\001\213\003\143\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\003\181\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\005E\001\017\001\018\001L\000\000\001\247\002\152\000\000\002\153\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\003%\003t\000\000\000\000\001\022\000\000\003\159\001%\000\000\000\000\003z\000\000\000\000\000\000\000\000\001\235\b\012\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\002\012\000\000\001\237\001\216\001\n\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\003\143\001\208\001\209\000\000\000\000\001\218\000\000\001\011\001\134\002\236\002\237\001\209\003\161\000\246\001\b\000\000\003\158\000\000\000\000\000\000\000\000\001\210\001\242\000\000\003t\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\003\164\000\000\007\241\003\165\000\000\001\251\000\000\001\252\000\000\000\000\003q\000\000\003\159\000\000\002\145\002\236\002\237\001\209\000\000\000\000\003\179\000\000\001\237\003s\002\240\003\143\003p\001\134\000\000\000\000\003t\004p\002\151\000\000\001\015\000\000\001\235\001\016\000\000\003z\000\000\001\017\001\018\000\000\003\181\bI\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\002\236\002\237\001\209\003\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\001\022\003\143\003t\000\000\000\000\000\000\000\000\003\159\000\000\000\000\001\218\003z\000\254\001\134\000\000\003\164\000\000\004\237\003\165\002\240\000\000\003p\001\134\000\000\000\000\003q\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\143\000\000\000\000\000\000\000\000\003t\002\152\000\000\002\153\000\000\003\159\000\000\003\161\000\000\003z\000\000\000\000\000\000\000\000\003\181\007\250\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\b|\000\000\000\000\003\164\001\235\000\000\003\165\000\000\000\000\003\143\000\000\000\000\000\000\003q\002\012\003\159\001\237\001\216\002\236\002\237\001\209\003\161\000\000\003\179\000\000\001\237\003s\002\240\001\n\003p\001\134\000\000\000\000\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\001\011\003\164\003\181\003\163\003\165\000\000\000\246\001\b\000\000\000\000\000\000\003q\000\000\003\159\000\000\003\161\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\002\240\003\143\003p\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\000\001\n\003\165\001z\003\181\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\002\236\002\237\001\209\003\161\001\011\003\179\000\000\001\237\003s\001\015\000\246\001\b\001\016\000\000\000\000\003t\001\017\001\018\000\000\000\000\003\159\000\000\000\000\000\000\003z\000\000\000\000\000\000\003\164\003\181\004`\003\165\002\240\000\000\003p\001\134\000\000\000\000\003q\002\236\002\237\001\209\006\000\000\000\000\000\000\000\001|\000\000\003\179\006,\001\237\003s\000\000\003\143\003t\000\000\001\155\001\208\001\209\000\000\001\159\000\000\000\246\003z\000\000\003\161\000\000\000\000\001\015\004\248\000\000\001\016\003\181\000\000\000\000\001\017\001\018\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\254\003\143\003\165\000\255\000\000\000\000\001:\000\000\000\000\003q\b\127\003\159\000\000\000\000\001\160\000\000\000\000\001\247\000\000\003\179\001\161\001\237\003s\002\240\000\000\003p\001\134\001;\000\000\000\000\000\000\000\000\001\162\001U\001\248\002\022\000\000\000\000\000\000\002\236\002\237\001\209\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\159\000\000\000\000\000\000\003t\000\000\003\161\000\000\000\000\000\000\000n\000\000\002\240\003z\003p\001\134\000\000\001\246\000\000\004\242\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\001\218\000\000\003\164\001\134\000\000\003\165\002\236\002\237\001\209\000\000\000\000\001\n\003q\003\143\000\000\001@\003\161\000\000\000\000\000\000\000\000\003t\003\179\000\000\001\237\003s\000\000\000\000\001\011\000\000\003z\000\000\000\000\000\000\000\246\001\b\007L\001\251\000\000\001\252\000\000\003\164\000\000\000\000\003\165\000\000\003\181\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\143\000\000\003\179\003\159\001\237\003s\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\002\012\000\000\001\237\001\216\000\000\000\000\001\014\003\181\000\000\000\000\002\236\002\237\001\209\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001L\000\000\003t\000\000\000\000\000\000\003\161\003\159\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\004\239\000\000\002\240\000\000\003p\001\134\000\000\001\022\000\000\007\176\001%\000\000\000\000\000\000\003\164\000\000\000\000\003\165\000\000\000\000\000\000\000\000\000\000\003\143\003q\001\208\001\209\t\007\000\000\000\000\007\184\000\000\000\000\000\000\003\179\003\161\001\237\003s\000\000\000\000\007\185\000\000\000\000\000\254\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\181\000\000\003\164\000\000\000\000\003\165\000\000\000\000\002\236\002\237\001\209\000\000\003q\000\000\003\159\007\186\000\000\000\000\001\247\002\236\002\237\001\209\003\179\003t\001\237\003s\002\240\000\000\003p\001\134\000\000\000\000\003z\000\000\003t\001\248\003-\000\000\b\182\000\000\000\000\000\000\000\000\003z\000\000\000\000\003\181\000\000\000\000\005C\007\187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\161\007\188\003\143\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\003\143\000\000\000\000\001\n\000\000\000\000\000\000\007\189\001\218\000\000\t\b\001\134\003\164\000\000\000\000\003\165\000\000\000\000\000\000\000\000\001\011\000\000\003q\000\000\000\000\000\000\000\246\001\b\007\191\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\003\159\0030\000\000\007\192\002\236\002\237\001\209\001\251\007\194\001\252\000\000\003\159\002\240\000\000\003p\001\134\000\000\000\000\003\181\003t\000\000\007\196\000\000\002\240\000\000\003p\001\134\000\000\003z\000\000\000\000\000\000\000\000\000\000\004\233\000\000\000\254\000\000\001\235\000\000\007\197\000\000\000\000\001\208\001\209\003\161\001\015\000\000\002\012\001\016\001\237\001\216\000\000\001\017\001\018\000\000\003\161\003\143\000\000\000\000\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\003\164\000\000\000\000\003\165\002<\000\000\000\000\000\000\000\000\001\"\003q\003\164\000\000\000\000\003\165\000\000\000\000\000\254\000\000\000\000\003\179\003q\001\237\003s\001\247\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\159\000\000\000\000\000\000\000\000\001\248\002?\000\000\003\181\002\236\002\237\001\209\002\240\000\000\003p\001\134\000\000\000\000\000\000\003\181\001\n\000\000\000\000\000\000\003t\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\001\011\001\246\005n\003t\000\000\000\000\000\246\001\b\003\161\000\000\000\000\000\000\003z\001\218\000\000\000\000\001\134\000\000\005\017\000\000\000\000\000\000\000\000\000\000\000\000\003\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\001\n\000\000\003\165\000\000\000\000\000\000\000\000\003\143\000\000\003q\000\000\001\208\001\209\000\000\000\000\000\000\001\251\001\011\001\252\003\179\000\000\001\237\003s\000\246\001\b\000\000\000\000\000\000\000\000\000\000\001\015\001\210\001\242\001\016\000\000\001\212\001\213\001\017\001\018\000\000\003\159\000\000\000\000\003\181\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\003\159\002\012\000\000\001\237\001\216\000\000\001\247\001#\000\000\000\000\001\208\001\209\002\240\000\000\003p\001\134\001\208\001\209\000\000\000\000\000\000\000\000\000\000\001\248\003A\001\015\000\000\000\000\001\016\003\161\001\210\001\242\001\017\001\018\001\212\001\213\001\210\001\242\000\000\000\000\001\212\001\213\000\000\000\000\000\000\003\161\000\000\000\000\000\000\000n\000\000\000\000\000\000\000\000\003\164\000\000\001\246\003\165\003N\000\000\000\254\001\247\000\000\000\255\003q\000\000\000\000\001\247\001\218\000\000\003\164\001\134\000\000\003\165\003\179\000\000\001\237\003s\001\248\002_\003q\000\000\000\000\000\000\001\248\003j\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\003\181\000\000\002\236\002\237\001\209\000\000\000\000\001\251\000\000\001\252\000\000\000\000\000\000\001\246\000\000\000\000\003\181\003t\000\000\001\246\000\000\001\208\001\209\000\000\000\000\001\218\003z\000\000\001\134\000\000\000\000\001\218\000\000\000\000\001\134\000\000\007\223\001\001\001\235\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\000\000\002\012\000\000\001\237\001\216\001\n\000\000\000\000\003\143\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\001\252\000\000\000\000\000\000\001\251\001\011\001\252\002\145\000\000\000\000\000\000\000\246\001\b\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\178\002\151\000\000\000\000\000\000\001\235\000\000\000\000\000\000\001\210\001\242\001\235\000\000\001\212\001\213\002\012\003\159\001\237\001\216\000\000\000\000\002\012\000\000\001\237\001\216\000\000\001z\000\000\002\240\000\000\003p\001\134\000\000\000\000\001\246\000\000\000\000\b\131\000\000\000\000\001\247\000\000\000\000\001\208\001\209\001\015\001\218\000\000\001\016\001\134\001\208\001\209\001\017\001\018\000\000\000\000\000\000\001\248\0027\000\000\0078\003\161\000\000\001\210\003H\003I\000\000\001\212\001\213\000\000\001\210\001\242\000\000\000\000\001\212\001\213\001z\000\000\001\022\002\236\002\237\001\209\002\152\001|\002\153\000\000\006>\000\000\000\000\004~\001\246\003J\000\000\001\155\003t\000\000\003q\001\159\000\000\000\246\000\000\001\247\001\218\003z\000\000\001\134\003\179\000\000\001\237\003s\000\000\000\000\000\000\004\128\001\235\000\000\000\000\000\000\001\248\004s\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\003\181\000\000\003\143\001|\000\000\000\000\006H\001\208\001\209\001\251\000\000\001\252\001\160\001\155\001\217\000\000\000\000\001\159\001\161\000\246\000\000\001\246\000\000\000\000\001\208\001\209\001\218\001\210\001\242\001\134\001\162\001\212\001\213\001\218\000\000\000\000\001\134\002\236\002\237\001\209\001\235\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\002\012\003\159\001\237\001\216\000\000\000\000\000\000\000\000\001\247\000\000\000\000\003\025\001\160\002\240\000\000\003p\001\134\000\000\001\161\000\000\001\251\000\000\001\252\000\000\002\145\001\248\002-\000\000\001\208\001\209\001\162\000\000\000\000\000\000\000\000\004U\004[\000\000\000\000\000\000\000\000\002\165\002\151\000\000\001\235\000\000\003\161\000\000\001\210\001\242\000\000\001\235\001\212\001\213\001\236\000\000\001\237\001\216\001\246\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\004~\001\246\000\000\000\000\000\000\001\247\000\000\003q\000\000\000\000\000\000\000\000\000\000\001\218\000\000\002\239\001\134\003\179\000\000\001\237\003s\000\000\001\248\0021\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\001\251\000\000\001\252\000\000\000\000\000\000\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\152\000\254\002\153\000\000\006\191\000\000\001\246\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\001\235\001\208\001\209\001\218\000\000\000\000\001\134\000\000\000\000\000\000\002\012\000\000\001\237\001\216\001\210\001\242\000\000\001\235\001\212\001\213\000\000\001\210\001\242\000\000\000\000\001\212\001\213\002\012\000\000\001\237\001\216\003q\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\001\251\003r\001\252\001\237\003s\001\247\000\000\000\000\003t\000\000\000\000\000\000\001\247\001\208\001\209\000\000\000\000\003z\000\000\000\000\000\000\006\193\001\248\002Q\000\000\000\000\000\000\005-\000\000\001\248\0024\001\235\000\000\001\210\001\242\000\000\001\n\001\212\001\213\000\000\000\000\002\012\000\000\001\237\001\216\000\000\003\143\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\001\246\000\000\000\000\000\000\000\246\006\196\000\000\001\246\000\000\001\247\000\000\000\000\001\218\001\208\001\209\001\134\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\001\248\002\149\000\000\000\000\007P\000\000\000\000\001\210\003H\003I\000\000\001\212\001\213\000\000\003\159\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\001\251\000\000\001\252\002\240\000\000\003p\001\134\001\251\000\000\001\252\001\246\000\000\003J\001\015\001\210\001\242\006\197\000\000\001\212\001\213\001\017\001\018\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\006\143\001\235\007\160\000\000\006\199\000\000\003\161\000\000\001\235\000\000\000\000\002\012\000\000\001\237\001\216\001\247\001\022\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\001\252\001\248\001\249\004~\001\217\000\000\002\236\002\237\001\209\000\000\003q\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\003\179\003t\001\237\003s\000\000\000\000\000\000\000\000\000\000\001\235\003z\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\002\012\004\202\001\237\001\216\007\176\003\181\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\003\143\000\000\007\177\000\000\000\000\007\184\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\000\000\007\185\004U\004[\000\000\000\000\000\000\003z\000\000\000\000\001\251\001\235\001\252\000\000\000\000\000\000\000\000\005\128\000\000\000\000\000\000\001\236\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\186\003\159\003\143\002\236\002\237\001\209\000\000\001\235\000\000\001\208\001\209\000\000\000\000\002\240\000\000\003p\001\134\002\012\003t\001\237\001\216\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\001\210\001\242\000\000\000\000\001\212\001\213\007\187\000\000\003\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\188\003\161\000\000\000\000\000\000\000\000\003\159\000\000\000\000\000\000\000\254\003\143\000\000\000\255\002\145\000\000\001:\000\000\002\240\007\189\003p\001\134\000\000\000\000\000\000\007\201\000\000\000\000\000\000\004~\000\000\002\192\002\151\000\000\000\000\000\000\003q\001?\000\000\000\000\007\191\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\161\000\000\007\192\002\236\002\237\001\209\000\000\007\194\000\000\003\159\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\003t\003\181\007\196\002\240\000\000\003p\001\134\000\000\001\218\003z\004~\001\134\000\000\000\000\000\000\000\000\001\001\003q\000\000\004\212\000\000\007\197\000\000\000\000\000\000\001z\000\000\003\179\000\000\001\237\003s\001\n\000\000\000\000\000\000\001@\003\161\000\000\003\143\000\000\000\000\002\236\002\237\001\209\002\152\000\000\002\153\000\000\001\011\000\000\000\000\003\181\000\000\000\000\000\246\001\b\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004~\003z\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\005\003\001\235\000\000\000\000\000\000\000\000\003\179\001|\001\237\003s\b\025\002\012\003\159\001\237\001\216\000\000\000\000\001\155\000\000\003\143\000\000\001\159\000\000\000\246\002\240\000\000\003p\001\134\000\000\001\014\003\181\001\208\001\209\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001L\000\000\007\216\000\000\000\000\001\210\003H\003I\000\000\001\212\001\213\003\161\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\001\160\000\000\003\159\000\000\001\022\000\000\001\161\001%\000\000\000\000\000\000\003t\000\000\003J\002\240\000\000\003p\001\134\001\162\004~\003z\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\004\253\000\000\001\208\001\209\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\161\000\000\003\143\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\001z\000\000\003\181\000\000\000\000\000\000\000\000\000\000\001\217\000\000\007\176\000\000\000\000\000\000\000\000\000\000\000\000\004~\000\000\000\000\001\218\000\000\000\000\001\134\003q\001\247\001\208\001\209\007\177\000\000\000\000\007\184\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\003\159\007\185\001\248\002\011\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\002\240\000\000\003p\001\134\000\000\001|\003\181\000\000\005\168\000\000\000\000\000\000\000\000\000\000\000\000\001\155\002\236\002\237\001\209\001\159\000\000\000\246\007\186\001\246\000\000\001\247\000\000\004U\004[\000\000\000\000\003t\000\000\003\161\000\000\001\218\001\235\000\000\001\134\000\000\003z\000\000\001\248\005\199\000\000\000\000\001\236\000\000\001\237\001\216\005\000\000\000\000\000\000\000\000\000\000\000\000\000\007\187\000\000\000\000\000\000\004~\000\000\000\000\001\160\000\000\000\000\007\188\003q\003\143\001\161\000\000\001\251\000\000\001\252\001\246\001\208\001\209\003\179\000\000\001\237\003s\001\162\000\000\001\208\001\209\007\189\001\218\000\000\000\000\001\134\000\000\007\190\000\000\000\000\000\000\001\210\001\242\000\000\000\000\001\212\001\213\003\181\001\235\001\210\001\242\000\000\007\191\001\212\001\213\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\003\159\000\000\007\192\000\000\000\000\000\000\001\251\007\194\001\252\001\247\000\000\000\000\002\240\000\000\003p\001\134\002\145\002\236\002\237\001\209\007\196\000\000\000\254\000\000\000\000\000\255\001\248\0022\000\000\000\000\000\000\000\000\003t\002\146\002\151\000\000\000\000\001\235\000\000\007\197\000\000\003z\000\000\000\000\000\000\003\161\000\000\002\012\000\000\001\237\001\216\004\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\003\143\001\218\000\000\004~\001\134\001\208\001\209\000\000\000\000\001\218\003q\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\001\210\001\242\001\001\000\000\001\212\001\213\000\000\000\000\001\208\001\209\000\000\000\000\000\000\001\251\000\000\001\252\000\000\001\n\000\000\003\181\002\152\000\000\002\153\000\000\003\159\000\000\000\000\000\000\001\210\001\242\000\000\001\247\001\212\001\213\001\011\000\000\002\240\000\000\003p\001\134\000\246\001\b\000\000\000\000\001\235\000\000\000\000\000\000\001\248\002%\000\000\000\000\001\235\000\000\002\012\000\000\001\237\001\216\000\000\001\247\000\000\000\000\002\012\000\000\001\237\001\216\000\000\001\208\001\209\003\161\000\000\000\000\000\000\000\000\000\000\000\000\001\248\002\b\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\001\210\001\242\000\000\b\137\001\212\001\213\001\218\000\000\000\000\001\134\004~\001\015\000\000\000\000\001\016\001\208\001\209\003q\001\017\001\018\000\000\000\000\001\246\002\236\002\237\001\209\000\000\003\179\000\000\001\237\003s\001\247\000\000\000\000\001\218\001\210\001\242\001\134\003t\001\212\001\213\000\000\000\000\001\251\001\022\001\252\000\000\003z\001\248\002^\000\000\003\181\000\000\000\000\000\000\000\000\000\000\004\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\001\251\000\000\001\252\001\235\000\000\003\143\000\000\000\000\000\000\003t\001\246\000\000\001\243\002\012\000\000\001\237\001\216\000\000\003z\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\004\129\000\000\000\000\001\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\001\237\001\216\001\246\000\254\003\143\000\000\000\255\001\208\001\209\001M\000\000\003\159\000\000\000\000\001\218\000\000\001\251\001\134\001\252\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\001\210\001\242\000\000\001O\001\212\001\213\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\003t\003\159\000\000\000\000\003\161\002\012\001\247\001\237\001\216\003z\002\236\002\237\001\209\002\240\000\000\003p\001\134\000\000\000\000\005R\000\000\000\000\000\000\001\248\002C\003t\001\001\000\000\000\000\000\000\001\235\000\000\004~\000\000\003z\000\000\000\000\000\000\003\143\003q\002\012\001\n\001\237\001\216\005'\001@\003\161\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\001\246\000\000\001\011\000\000\000\000\000\000\000\000\003\143\000\246\001\b\000\000\000\000\001\218\000\000\000\000\001\134\000\000\003\181\004~\000\000\000\000\000\000\000\000\000\000\000\000\003q\002\236\002\237\001\209\000\000\000\000\003\159\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\003t\000\000\002\240\000\000\003p\001\134\000\000\000\000\001\251\003z\001\252\000\000\000\000\000\000\000\000\003\159\000\000\001\014\003\181\005M\000\000\002\236\002\237\001\209\000\000\001\015\000\000\002\240\001\016\003p\001\134\000\000\001\017\001\018\001L\003\161\003t\000\000\003\143\001\235\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\002\012\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\001\022\000\000\003\161\001%\000\000\004~\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\003\143\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\003\159\004~\000\000\000\000\002\236\002\237\001\209\000\000\003q\001\208\001\209\000\000\002\240\000\000\003p\001\134\000\000\003\181\003\179\003t\001\237\003s\002\236\002\237\001\209\000\000\000\000\000\000\003z\001\210\003H\007k\000\000\001\212\001\213\000\000\003\159\003t\000\000\000\000\000\000\000\000\003\181\000\000\000\000\003\161\003z\000\000\002\240\000\000\003p\001\134\000\000\000\000\002\236\002\237\001\209\003\143\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\000\000\000\000\004~\003t\003\143\000\000\000\000\003z\000\000\003q\003\161\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\159\003\143\000\000\005&\001\217\000\000\003\143\000\000\003\181\000\000\003q\000\000\002\240\000\000\003p\001\134\001\218\000\000\003\159\001\134\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\003\181\003\161\000\000\000\000\000\000\000\000\003\159\003t\000\000\000\000\000\000\003\159\000\000\000\000\000\000\000\000\003z\000\000\002\240\003\161\003p\001\134\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\186\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\003\143\003\179\004\025\001\237\003s\001\236\003\161\001\237\001\216\003q\000\000\003\161\000\000\000\000\002\236\002\237\001\209\000\000\007x\003\179\000\000\001\237\003s\000\000\000\000\003\181\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\004\147\000\000\000\000\000\000\003z\004\019\000\000\003q\000\000\003\181\000\000\000\000\003q\000\000\000\000\003\159\000\000\003\179\000\000\001\237\003s\000\000\003\179\000\000\001\237\003s\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\143\002\236\002\237\001\209\000\000\000\000\000\000\000\000\003\181\000\000\000\000\000\000\000\000\003\181\000\000\000\000\003t\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\003z\000\000\003\161\000\000\000\000\000\000\000\000\003t\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\003z\000\000\000\000\002\236\002\237\001\209\000\000\003t\003\159\000\000\000\000\000\000\000\000\003\143\003\197\000\000\003z\000\000\003t\000\000\002\240\003q\003p\001\134\000\000\000\000\000\000\003z\000\000\003\143\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\006\214\000\000\000\000\000\000\000\000\000\000\000\000\003\143\002\236\002\237\001\209\000\000\000\000\000\000\000\000\003\161\000\000\003\181\003\143\000\000\000\000\000\000\000\000\003t\003\159\000\000\000\000\000\000\000\000\006\215\b\168\006\216\003z\000\000\000\000\000\000\002\240\000\000\003p\001\134\003\159\000\000\000\000\004\157\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\003\179\003\143\001\237\003s\006\217\000\000\000\000\003\159\002\240\003\161\003p\001\134\000\000\000\000\000\000\002\236\002\237\001\209\000\000\002\240\000\000\003p\001\134\000\000\003\181\003\161\000\000\000\000\000\000\000\000\003t\002\236\002\237\001\209\000\000\000\000\000\000\005 \006\218\003z\000\000\003\161\000\000\000\000\003q\000\000\003t\000\000\006\219\006\220\003\159\006\221\003\161\004\168\003\179\003z\001\237\003s\000\000\000\000\003q\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\143\004\137\003\179\000\000\001\237\003s\000\000\007\027\003q\000\000\003\181\000\254\004%\000\000\000\255\000\000\003\143\000\000\003\179\003q\001\237\003s\000\000\000\000\000\000\000\000\003\181\003\161\000\000\003\179\000\254\001\237\003s\000\255\006\223\000\000\000\000\000\000\000\000\006\225\006\235\000\000\003\181\000\000\000\000\000\000\000\000\000\000\002\198\003\159\000\000\000\000\007\023\003\181\000\000\004\031\000\000\000\000\001\003\000\000\000\000\002\240\003q\003p\001\134\003\159\000\000\b\132\007C\000\000\000\000\007\024\003\179\000\000\001\237\003s\000\000\002\240\000\000\003p\001\134\000\000\002\236\002\237\001\209\000\000\001\001\001\208\001\209\000\000\000\000\000\000\000\000\000\000\003\161\000\000\003\181\003t\000\000\000\000\000\000\001\n\000\000\000\000\000\000\001\001\003z\001\210\003H\007\163\003\161\001\212\001\213\000\000\000\000\000\000\000\000\000\000\001\011\000\000\001\n\000\000\005x\000\000\000\246\001\b\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\003\143\000\000\001\011\004\r\003\179\000\000\001\237\003s\000\246\001\b\003q\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\003\181\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003z\001\014\000\000\000\000\000\000\000\000\003\181\000\000\000\000\001\015\000\000\003\159\001\016\000\000\000\000\001\217\001\017\001\018\002\202\000\000\001\014\000\000\000\000\002\240\000\000\003p\001\134\001\218\001\015\003\143\001\134\001\016\000\000\000\000\000\000\001\017\001\018\0013\000\000\000\000\000\000\000\000\001\022\000\000\000\000\001%\000\000\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\003\161\000\000\002\236\002\237\001\209\001\022\003t\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\003t\002\236\002\237\001\209\000\000\003\159\001z\000\000\000\000\003z\000\000\004\001\000\000\000\000\000\000\000\000\003t\002\240\003q\003p\001\134\000\000\001\235\000\000\000\000\003z\000\000\003\143\003\179\000\000\001\237\003s\001\236\000\000\001\237\001\216\000\000\000\000\003\143\000\000\000\000\002\236\002\237\001\209\000\000\000\000\007\164\000\000\000\000\000\000\003\161\000\000\003\181\000\000\003\143\000\000\003t\002\236\002\237\001\209\000\000\000\000\000\000\001|\000\000\003z\005\148\000\000\000\000\000\000\000\000\000\000\003t\001\155\000\000\000\000\003\159\001\159\004\200\000\246\000\000\003z\000\000\000\000\000\000\003q\000\000\003\159\002\240\000\000\003p\001\134\000\000\000\000\003\143\003\179\000\000\001\237\003s\002\240\000\000\003p\001\134\003\159\000\000\000\000\000\000\000\000\000\000\000\000\003\143\002\236\002\237\001\209\000\000\002\240\000\000\003p\001\134\003\181\000\000\003\161\001\160\000\000\000\000\000\000\003t\000\000\001\161\002\236\002\237\001\209\003\161\000\000\000\000\003z\000\000\000\000\000\000\000\000\001\162\000\000\000\000\003\159\003t\000\000\000\000\000\000\003\161\004\188\000\000\000\000\000\000\003z\000\000\002\240\003q\003p\001\134\003\159\003\239\000\000\000\000\000\000\003\143\000\000\003\179\003q\001\237\003s\000\000\002\240\000\000\003p\001\134\000\000\004\220\003\179\000\000\001\237\003s\000\000\003\143\003q\000\000\002\236\002\237\001\209\003\161\000\000\003\181\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\003t\003\181\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\003\159\000\000\000\000\0049\003\181\000\000\000\000\000\000\000\000\000\000\003q\000\000\002\240\000\000\003p\001\134\000\000\000\000\003\159\003\209\003\179\000\000\001\237\003s\000\000\003\143\003q\000\000\000\254\000\000\002\240\000\255\003p\001\134\000\000\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\003\181\003\161\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\002\236\002\237\001\209\000\000\000\000\000\000\003\181\003t\000\000\003\161\000\000\002\198\000\000\000\000\000\000\003t\003z\000\000\000\000\003\215\003\159\000\000\000\000\000\000\003z\000\000\003q\000\000\000\000\000\000\000\000\005\219\002\240\000\000\003p\001\134\003\179\003\251\001\237\003s\000\000\000\000\000\000\000\254\003q\003\143\000\255\000\000\000\000\001\001\000\000\000\000\000\000\003\143\003\179\000\000\001\237\003s\000\000\000\000\003\181\000\000\000\000\000\000\001\n\003\161\000\000\000\000\000\000\000\000\000\000\001\003\000\000\000\000\000\000\000\000\000\000\000\000\003\181\000\000\bv\001\011\000\000\002\236\002\237\001\209\000\000\000\246\001\b\000\254\000\000\000\000\000\255\003\203\003\159\000\000\000\000\000\000\003t\000\000\003q\000\000\003\159\000\000\000\000\000\000\002\240\003z\003p\001\134\003\179\000\000\001\237\003s\002\240\000\000\003p\001\134\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\002\236\002\237\001\209\000\000\000\000\000\000\001\n\003\181\000\000\003\143\001\014\000\000\003\161\000\000\000\000\003t\000\000\000\000\001\015\002\201\003\161\001\016\000\000\001\011\003z\001\017\001\018\002\202\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\003\221\000\000\000\000\000\000\000\000\000\000\000\000\003q\003\227\000\000\000\000\001\022\001\n\003\143\001%\003q\000\000\003\179\003\159\001\237\003s\000\000\002\236\002\237\001\209\003\179\000\000\001\237\003s\001\011\002\240\000\000\003p\001\134\000\000\000\246\001\b\003t\000\000\001\014\000\000\003\181\000\000\000\000\000\000\000\000\003z\001\015\000\000\003\181\001\016\000\000\000\000\000\000\001\017\001\018\0013\000\000\000\000\000\000\000\000\000\000\003\159\003\161\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\003\143\003p\001\134\000\000\003t\001\022\000\000\000\000\001%\000\000\001\014\000\000\000\000\003z\000\000\000\000\004\007\000\000\001\015\000\000\000\000\001\016\000\000\003q\000\000\001\017\001\018\002\202\000\000\002\236\002\237\001\209\003\161\003\179\000\000\001\237\003s\000\000\002\236\002\237\001\209\000\000\003\143\000\000\003t\002\236\002\237\001\209\000\000\003\159\000\000\001\022\000\000\003z\001%\000\000\000\000\003\181\000\000\000\000\004+\002\240\003\027\003p\001\134\000\000\000\000\003q\000\000\003o\000\000\002\236\002\237\001\209\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\143\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\003\159\000\000\000\000\003\161\003z\002\236\002\237\001\209\000\000\000\000\003\181\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003z\000\000\007\221\000\000\003\143\000\000\000\000\000\000\000\000\003q\000\000\003\159\000\000\002\236\002\237\001\209\003\161\000\000\000\000\003\179\002\239\001\237\003s\002\240\000\000\003p\001\134\002\239\003t\003\143\000\000\000\000\002\240\000\000\003p\001\134\000\000\003z\000\000\002\240\000\000\003p\001\134\003\181\003\233\000\000\000\000\000\000\000\000\001\208\001\209\003q\000\000\003\159\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\002\240\003\143\003p\001\134\001\210\003H\003I\000\000\001\212\001\213\000\000\000\000\000\000\003\159\000\000\000\000\000\000\000\000\000\000\004\210\003\181\000\000\000\000\000\000\000\000\002\240\003q\003p\001\134\000\000\000\000\000\000\003J\003\161\000\254\003q\003\179\000\255\001\237\003s\000\000\000\000\003q\000\000\000\000\003r\000\000\001\237\003s\000\000\003\159\000\000\003r\000\000\001\237\003s\000\000\000\000\003\161\000\000\003\181\003\171\002\240\000\000\003p\001\134\000\000\000\000\003q\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\254\000\000\003\179\000\255\001\237\003s\000\000\000\000\000\000\001\217\004?\000\000\000\000\000\000\000\000\007M\000\000\003q\000\000\003\161\000\000\001\218\000\000\000\000\001\134\000\000\003\181\003\179\000\000\001\237\003s\000\000\000\000\001\001\000\000\000\000\000\000\002\198\002\236\002\237\001\209\000\000\000\000\000\000\002\236\002\237\001\209\005\031\001\n\000\000\000\000\003\181\000\000\003t\003q\000\000\000\000\006}\000\000\003t\000\000\000\000\003z\000\000\003\179\001\011\001\237\003s\003z\000\000\000\000\000\246\001\b\000\000\000\000\001\001\000\000\000\000\000\000\000\000\003L\004[\000\000\000\000\000\000\000\000\000\000\000\000\003\181\001\235\001\n\003\143\000\000\000\000\002\236\002\237\001\209\003\143\000\000\001\236\000\000\001\237\001\216\000\000\000\000\000\000\000\000\001\011\000\000\003t\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\003z\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\002\236\002\237\001\209\001\017\001\018\002\202\000\000\003\159\000\000\000\000\000\000\000\000\000\000\003\159\003\143\003t\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\003z\002\240\000\000\003p\001\134\001\022\001\014\000\000\001%\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002\202\000\000\000\000\000\000\000\000\003\161\003\143\000\254\000\000\000\000\000\255\003\161\000\000\000\000\000\000\000\000\003\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\022\000\000\000\000\001%\002\240\000\000\003p\001\134\000\000\004\178\000\000\000\000\000\000\000\000\000\000\005\n\003q\000\000\000\000\000\000\002\198\000\000\003q\002\236\002\237\001\209\003\179\000\000\001\237\003s\000\000\003\159\003\179\000\000\001\237\003s\000\000\003\161\000\000\000\000\b\175\000\000\000\000\002\240\000\000\003p\001\134\b4\000\000\000\000\003\181\000\000\000\000\000\000\000\000\000\000\003\181\000\000\001\001\000\000\000\000\000\000\002\236\002\237\001\209\003\177\000\000\000\000\000\000\000\000\000\000\000\000\003q\001\n\000\000\000\000\003\161\003t\002\236\002\237\001\209\000\000\003\179\000\000\001\237\003s\003z\000\000\000\000\000\000\001\011\000\000\000\000\003t\000\000\000\000\000\246\001\b\000\000\000\000\000\000\000\000\003z\000\000\005<\000\000\003\181\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\003\143\000\000\002\236\002\237\001\209\000\000\003\179\000\000\001\237\003s\002\239\000\000\000\000\000\000\000\000\000\000\003\143\003t\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\003z\000\000\000\000\000\000\003\181\001\014\000\000\000\254\000\000\000\000\006\191\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002\202\003\159\000\000\000\000\002\236\002\237\001\209\003\143\000\000\002\236\002\237\001\209\000\000\002\240\000\000\003p\001\134\003\159\000\000\003t\000\000\000\000\000\000\000\000\001\022\000\000\000\000\001%\003z\002\240\000\000\003p\001\134\0057\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\003\161\000\254\000\000\000\000\000\255\000\000\003r\000\000\001\237\003s\003\159\003\143\000\000\000\000\006\193\000\000\003\161\000\000\002\236\002\237\001\209\000\000\002\240\000\000\003p\001\134\000\000\000\000\bH\001\n\000\000\000\000\000\000\003t\000\000\003q\000\000\000\000\002\198\000\000\000\000\000\000\003z\000\000\003\245\003\179\001\011\001\237\003s\000\000\000\000\003q\000\246\006\196\000\000\003\161\000\000\000\000\003/\000\000\003\159\003\179\000\000\001\237\003s\002\239\000\000\000\000\000\000\003\181\000\000\003\143\002\240\000\000\003p\001\134\001\001\002\240\000\000\003p\001\134\000\000\000\000\b9\000\000\003\181\000\000\000\000\000\000\000\000\003q\001\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\001\237\003s\000\000\003\161\000\000\000\000\001\011\000\000\001\015\000\000\000\000\006\197\000\246\001\b\000\000\001\017\001\018\000\254\003\159\000\000\000\255\000\000\003\181\001z\000\000\006\143\000\000\007\134\000\000\006\199\002\240\004\232\003p\001\134\002\236\002\237\001\209\000\000\003q\000\254\000\000\001\022\000\255\003q\000\000\000\000\000\000\000\000\003\179\003t\001\237\003s\000\000\003r\003C\001\237\003s\000\000\003z\000\000\000\000\000\000\001\014\003\161\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\003\181\001\016\000\000\000\000\004L\001\017\001\018\002\202\001|\000\000\000\000\005\143\000\000\000\254\000\000\003\143\000\255\000\000\001\155\004}\001\001\000\000\001\159\000\000\000\246\000\000\003q\000\000\000\000\000\000\000\000\001\022\000\000\000\000\001%\001\n\003\179\000\000\001\237\003s\000\000\000\000\001\001\000\000\000\000\006\136\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\001\n\000\246\001\b\003\181\000\000\000\000\000\000\003\159\000\000\000\000\001\160\000\000\000\000\000\000\000\000\000\000\001\161\001\011\000\000\002\240\000\000\003p\001\134\000\246\001\b\000\000\000\000\000\000\001\162\000\000\000\000\001\001\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\001\014\003\161\000\000\000\254\000\000\000\000\000\255\000\000\001\015\000\000\000\000\001\016\001\011\000\000\000\000\001\017\001\018\002(\000\246\001\b\000\000\005\241\001\014\000\000\000\254\000\000\000\000\000\255\000\000\004\227\001\015\000\000\000\000\001\016\000\000\001z\003q\001\017\001\018\003[\005\244\001\022\000\000\000\000\001%\000\000\003\179\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\007f\000\000\000\254\001\001\000\000\000\255\000\000\001\022\000\000\000\000\001%\000\000\001\014\000\000\003\181\000\000\000\000\000\000\001\n\000\000\001\015\000\000\001\001\001\016\000\000\000\000\000\000\001\017\001\018\006\141\000\254\000\000\000\000\000\255\000\000\001\011\001|\001\n\000\000\005\138\000\000\000\246\001\b\001\001\000\000\000\000\001\155\000\000\000\254\000\000\001\159\000\255\000\246\001\022\001\011\000\000\001%\000\000\001\n\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\005\241\000\000\000\000\000\254\000\000\000\000\000\255\000\000\001\011\000\000\001\001\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\b\029\000\000\000\000\000\000\000\000\001\014\001\n\000\000\000\000\001\160\001z\000\000\000\000\001\015\000\000\001\161\001\016\000\000\000\000\001\001\001\017\001\018\000\000\001\011\001\014\000\000\000\000\001\162\000\000\000\246\001\b\000\000\001\015\b\215\001\n\001\016\000\000\001\001\000\000\001\017\001\018\006\154\000\000\000\000\007\148\001\014\001\022\000\000\000\000\005\248\000\000\001\011\001\n\001\015\000\000\000\000\001\016\000\246\001\b\001\001\001\017\001\018\006\141\000\254\000\000\001\022\000\255\001|\001%\001\011\005\179\000\000\000\000\000\000\001\n\000\246\001\b\001\155\000\000\b{\000\000\001\159\000\254\000\246\000\000\000\255\001\022\001\015\000\000\001%\001\016\001\011\000\000\000\000\001\017\001\018\000\000\000\246\001\b\000\000\003;\000\000\000\000\000\254\000\000\000\000\000\255\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\022\000\000\001\017\001\018\000\000\001\014\001\160\000\000\000\000\000\000\000\000\000\000\001\161\001\015\000\000\000\000\001\016\000\000\001\001\000\000\001\017\001\018\b\216\000\000\001\162\000\000\000\000\001\014\001\022\000\000\007\176\005\248\000\000\001\n\000\000\001\015\000\000\001\001\001\016\000\000\000\000\000\000\001\017\001\018\006\154\t\016\001\022\006\157\t\017\001%\001\011\007\184\001\n\000\000\000\000\000\000\000\246\001\b\001\001\000\000\000\000\007\185\000\000\000\254\000\000\000\000\000\255\000\000\001\022\001\011\000\000\001%\000\000\001\n\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\001\208\001\209\001\011\000\000\000\000\000\000\007\186\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\001\210\003H\007k\000\000\001\212\001\213\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002(\000\000\001\014\000\000\000\000\000\000\007\187\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\001\007\188\001\017\001\018\002\139\000\000\000\000\000\000\001\014\001\022\000\000\000\254\001%\000\000\000\255\001\n\001\015\000\000\001\001\001\016\007\189\000\000\t\019\001\017\001\018\002\132\000\000\000\000\001\022\000\000\000\000\001%\001\011\001\n\000\000\000\000\000\000\000\000\000\246\001\b\000\000\007\191\000\000\007\176\000\000\000\000\000\000\000\000\000\000\001\022\001\011\001\217\001%\000\000\007\192\000\000\000\246\001\b\t\016\007\194\000\000\t\017\000\000\001\218\007\184\000\000\001\134\000\000\000\000\000\000\000\254\000\000\007\196\000\255\007\185\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\001\001\000\000\001\014\000\000\000\254\007\197\000\000\000\255\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\n\000\000\001\017\001\018\002\186\001\014\007\186\000\000\000\000\000\000\000\000\000\000\000\000\001\015\001\208\001\209\001\016\001\011\000\000\000\000\001\017\001\018\004j\000\246\001\b\000\000\000\000\000\000\001\022\000\000\001\235\001%\000\000\000\000\001\210\003H\003I\000\000\001\212\001\213\001\236\007\187\001\237\001\216\001\001\000\000\001\022\000\000\000\000\001%\000\000\007\188\000\000\007w\001\001\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\001\n\007\189\000\254\t\027\001\014\000\255\000\000\001\011\000\000\000\000\001\n\000\000\001\015\000\246\001\b\001\016\000\000\001\011\000\000\001\017\001\018\004I\007\191\000\246\001\b\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\007\192\000\000\000\000\000\000\000\000\007\194\000\000\000\000\000\000\000\254\001\022\001\217\000\255\001%\000\000\000\000\000\000\000\000\007\196\000\254\000\000\000\000\000\255\001\218\000\000\000\000\001\134\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\007\197\001\014\001\016\000\000\000\000\001\001\001\017\001\018\b\134\001\015\000\000\001\014\001\016\000\000\000\000\000\000\001\017\001\018\003\022\001\015\001\n\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001\145\000\000\000\000\000\000\001\022\000\000\000\000\001%\000\000\001\011\000\000\000\000\000\000\000\000\001\022\000\246\001\b\001%\003K\001\001\000\000\000\000\000\254\000\000\001\022\000\255\001\235\001%\000\000\001\001\000\000\000\000\000\000\000\000\001\n\000\000\001\236\000\000\001\237\001\216\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\254\000\246\001\b\000\255\000\000\001\011\000\000\000\000\000\000\001\014\000\000\000\246\001\b\000\254\000\000\000\000\000\255\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\001\001\000\000\000\000\000\254\000\000\000\000\006\191\000\000\000\000\001\022\001\014\000\000\001%\000\000\000\000\001\n\000\000\000\000\001\015\000\000\001\014\001\016\000\000\000\000\000\000\001\017\001\018\001\147\001\015\000\000\000\000\001\016\001\011\000\000\001\001\001\017\001\018\001/\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\001\n\000\000\001\022\000\000\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\001\022\001\n\000\000\001%\000\000\001\011\000\000\001\001\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\000\000\006\193\001\011\000\000\000\000\000\000\001\n\000\000\000\246\001\b\000\000\001\014\000\000\000\000\000\000\000\000\001\n\000\000\000\254\001\015\000\000\000\255\001\016\001\011\000\000\000\000\001\017\001\018\001*\000\246\001\b\000\254\000\000\001\011\006\191\000\000\000\000\000\000\000\000\000\246\006\196\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\001\022\001\015\000\000\001%\001\016\000\000\001\014\000\000\001\017\001\018\007J\000\000\000\000\000\254\001\015\000\000\000\255\001\016\000\000\000\000\000\000\001\017\001\018\0072\000\000\000\254\000\000\001\014\000\255\000\000\000\000\000\000\000\000\000\000\001\022\001\015\000\000\001%\001\016\000\000\000\000\001\001\001\017\001\018\bx\001\015\000\000\001\022\006\197\000\000\001%\000\000\001\017\001\018\006\193\000\000\001\n\000\000\000\000\000\000\000\000\000\000\006\143\000\000\006\210\000\000\006\199\000\000\001\022\001\n\000\000\001%\000\254\001\011\000\000\006\191\000\000\000\000\001\022\000\246\001\b\000\000\000\000\000\000\000\000\000\000\001\011\000\000\001\001\000\000\000\000\000\000\000\246\006\196\000\000\000\000\000\000\000\000\000\000\000\254\001\001\000\000\006\191\001\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\002\236\002\237\001\209\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\000\000\001\014\000\000\000\000\001\011\000\000\000\000\000\000\000\000\001\015\000\246\001\b\001\016\003b\000\000\000\000\001\017\001\018\004^\006\193\000\000\000\000\001\015\000\000\000\254\006\197\000\000\006\191\000\000\001\017\001\018\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\006\143\000\000\006\202\001\022\006\199\000\000\001%\006\193\000\000\001\014\000\000\000\000\001\011\000\000\000\000\000\000\001\022\001\015\000\246\006\196\001\016\001\014\001\n\000\000\001\017\001\018\b)\000\254\000\000\001\015\000\255\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002\031\001\011\000\254\000\000\000\000\000\255\000\000\000\246\006\196\000\000\000\000\000\000\001\022\000\000\002\239\001%\000\000\000\000\000\000\000\000\000\254\000\000\006\193\000\255\001\022\000\000\002\240\001%\003p\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\001\015\000\000\000\000\006\197\000\000\000\000\000\000\001\017\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\006\143\000\000\006\198\000\000\006\199\000\246\006\196\000\000\000\000\001\001\001\015\000\000\000\000\006\197\000\000\000\000\001\022\001\017\001\018\000\000\000\000\000\000\001\001\000\000\001\n\000\000\000\000\006\143\000\000\006\200\000\000\006\199\000\000\000\000\000\000\000\000\000\000\001\n\000\000\003q\001\001\001\011\000\254\001\022\000\000\000\255\000\000\000\246\001\b\003r\000\000\001\237\003s\000\000\001\011\001\n\000\000\000\000\000\000\000\000\000\246\001\b\000\000\001\015\000\000\000\000\006\197\000\000\000\000\000\000\001\017\001\018\001\011\000\254\000\000\000\000\000\255\000\000\000\246\001\b\006\143\000\000\006\201\000\000\006\199\000\254\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\254\001\022\001\014\000\255\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\014\001z\001\017\001\018\006f\000\000\000\254\001\001\001\015\000\255\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002X\001\014\000\000\000\000\000\000\001\n\000\000\000\000\000\000\001\015\000\000\001\022\001\016\000\000\001%\000\000\001\017\001\018\006r\000\000\000\000\001\001\001\011\000\000\001\022\000\000\000\000\001%\000\246\001\b\000\000\000\000\000\000\001\001\000\000\000\000\001\n\000\000\000\000\000\000\000\000\001|\001\022\001\001\001\164\001%\000\000\000\000\001\n\000\000\000\000\001\155\000\000\001\011\000\000\001\159\000\000\000\246\001\n\000\246\001\b\000\000\000\000\000\000\001\001\001\011\000\254\000\000\000\000\000\255\000\000\000\246\001\b\000\000\000\000\001\011\000\000\000\000\001\014\001\n\000\000\000\246\001\b\000\000\000\254\000\000\001\015\000\255\000\000\001\016\000\000\000\000\000\000\001\017\001\018\002\159\001\011\000\000\000\000\000\000\001\160\000\000\000\246\001\b\000\000\000\000\001\161\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\001\162\001\022\001\016\001\014\001%\000\000\001\017\001\018\004N\000\000\000\000\001\015\000\000\001\014\001\016\000\000\000\000\000\000\001\017\001\018\002\200\001\015\000\000\001\001\001\016\000\000\000\000\000\000\001\017\001\018\002\172\000\000\001\022\000\000\001\014\001%\000\000\000\000\001\n\000\000\000\254\001\001\001\015\000\255\001\022\001\016\000\000\001%\000\000\001\017\001\018\001\\\000\000\000\000\001\022\001\011\001\n\001%\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\254\001\022\000\000\000\255\001%\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\001z\000\000\000\000\001\001\000\000\000\254\000\000\001\015\000\255\000\000\001\016\000\000\000\000\000\000\001\017\001\018\003]\001\014\001\n\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\b\005\001\011\000\254\001\001\000\000\000\255\001\022\000\246\001\b\001%\000\000\000\000\000\000\000\000\000\254\001\001\000\000\000\255\001\n\000\000\000\000\000\000\000\000\001|\001\022\000\000\001\182\001%\000\000\000\000\001\n\000\000\000\000\001\155\000\000\001\011\000\000\001\159\000\000\000\246\000\000\000\246\001\b\000\000\000\000\000\000\001\001\001\011\000\254\000\000\000\000\000\255\000\000\000\246\001\b\000\000\000\000\001\014\000\000\000\000\000\000\001\n\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\001\230\000\000\000\000\001\001\001\011\000\000\000\000\000\000\001\160\000\000\000\246\001\b\000\000\000\000\001\161\001\001\000\000\001\014\001\n\000\000\000\254\000\000\000\000\000\255\001\022\001\015\001\162\001%\001\016\001\014\001\n\000\000\001\017\001\018\002\002\001\011\000\000\001\015\000\000\000\000\001\016\000\246\001\b\000\000\001\017\001\018\0015\001\011\000\000\001\001\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\001\022\000\000\001\014\001%\000\000\000\000\001\n\000\000\000\254\000\000\001\015\000\255\001\022\001\016\000\000\001%\000\000\001\017\001\018\002b\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\000\000\000\000\001\014\000\000\000\000\000\000\001\001\000\000\000\254\000\000\001\015\000\255\001\022\001\016\001\014\001%\000\000\001\017\001\018\003E\000\000\001\n\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\003=\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\001\022\000\246\001\b\001%\000\000\001\014\001\208\001\209\000\000\001\001\000\000\000\254\001\022\001\015\000\255\001%\001\016\000\000\000\000\000\000\001\017\001\018\001\196\000\000\001\n\000\000\001\210\003H\007\163\000\000\001\212\001\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\011\000\254\000\000\000\000\000\255\001\022\000\246\001\b\001%\000\000\001\014\000\000\000\000\000\000\001\n\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\000\000\000\000\001\017\001\018\006\156\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\000\001\022\000\000\000\000\001%\000\000\001\014\006\214\000\000\000\000\001\n\000\000\000\000\000\000\001\015\000\000\001\217\001\016\000\000\000\000\000\000\001\017\001\018\006\140\000\000\000\000\001\001\001\011\001\218\000\000\000\000\001\134\000\000\000\246\001\b\000\000\006\215\001\014\006\216\000\000\000\000\001\n\000\000\006\214\000\000\001\015\000\254\001\022\001\016\000\255\001%\000\000\001\017\001\018\001\019\001\208\001\209\000\000\001\011\000\254\000\000\000\000\000\255\000\000\000\246\001\b\000\000\000\000\000\000\000\000\000\000\006\217\006\215\000\000\006\216\001\210\002\143\000\000\001\022\001\212\001\213\001%\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\235\000\000\001\017\001\018\000\000\000\000\000\000\000\000\000\000\006\218\001\236\006\217\001\237\001\216\000\000\000\000\000\000\000\000\001\014\006\219\006\220\000\000\006\221\000\000\007\165\001\001\001\015\000\000\001\022\001\016\000\000\001\140\000\000\001\017\001\018\000\000\000\000\000\000\001\001\000\000\001\n\000\000\000\000\000\000\000\000\006\218\007\025\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\006\219\006\220\001\011\006\221\001\022\001\217\000\000\001\142\000\246\001\b\001\208\001\209\000\000\000\000\000\000\001\011\000\000\001\218\006\223\000\000\001\134\000\246\001\b\006\225\006\235\000\000\000\000\006\222\001\208\001\209\001\210\004n\000\000\000\000\001\212\001\213\007\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\002\176\000\000\000\000\001\212\001\213\006\223\007\024\001\208\001\209\001\014\006\225\006\235\000\254\000\000\000\000\000\255\000\000\001\015\000\000\000\000\001\016\000\000\001\014\007\023\001\017\001\018\000\000\001\210\001\224\000\000\001\015\001\212\001\213\001\016\001\208\001\209\001\235\001\017\001\018\000\000\001\208\001\209\007\024\000\000\000\000\000\000\001\236\000\000\001\237\001\216\001\022\000\000\000\000\001F\001\210\001\245\000\000\000\000\001\212\001\213\001\210\002\019\001\217\001\022\001\212\001\213\005\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\001\217\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\001\218\001\208\001\209\001\134\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\000\000\001\210\002\180\000\000\000\000\001\212\001\213\001\011\001\218\000\000\000\000\001\134\000\000\000\246\001\b\000\000\000\254\000\000\000\000\000\255\000\000\000\000\000\000\001\217\000\000\001\208\001\209\000\000\000\000\001\217\001\235\001\208\001\209\000\000\000\000\001\218\000\000\000\000\001\134\000\000\001\236\001\218\001\237\001\216\001\134\001\210\002O\000\000\001\235\001\212\001\213\001\210\002\006\000\000\000\000\001\212\001\213\000\000\001\236\000\000\001\237\001\216\000\000\bu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001\016\000\000\001\235\000\000\001\017\001\018\000\000\000\000\001\217\000\000\000\000\000\000\001\236\000\000\001\237\001\216\000\000\001\001\000\000\000\000\001\218\000\000\000\254\001\134\000\000\000\255\000\000\000\000\000\000\001\235\001\022\000\000\001\n\000\000\000\000\001\235\000\000\000\000\000\000\001\236\000\000\001\237\001\216\000\000\000\000\001\236\000\000\001\237\001\216\001\011\000\000\000\000\001\217\000\000\000\000\000\246\001\b\000\000\001\217\001\208\001\209\000\000\000\000\000\000\001\218\001\208\001\209\001\134\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\001\210\002#\000\000\000\000\001\212\001\213\001\210\001\234\000\000\001\235\001\212\001\213\000\000\000\000\000\000\001\208\001\209\000\000\001\001\001\236\000\000\001\237\001\216\001\208\001\209\000\000\0018\000\000\000\000\000\000\000\000\000\000\000\000\001\n\001\015\001\210\002\190\001\016\000\000\001\212\001\213\001\017\001\018\001\210\003G\000\000\000\000\001\212\001\213\000\000\001\011\000\000\000\000\001\235\000\000\000\000\000\246\001\b\000\000\001\235\000\000\000\000\000\000\001\236\000\000\001\237\001\216\001\022\000\000\001\236\000\000\001\237\001\216\000\000\000\000\000\000\000\254\000\000\000\000\000\255\000\000\001\217\000\000\000\000\001\208\001\209\000\000\001\217\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\001\218\000\000\000\000\001\134\000\000\001\210\002\163\0012\000\000\001\212\001\213\000\000\000\000\000\000\000\000\001\015\000\000\001\217\001\016\000\000\000\000\000\000\001\017\001\018\000\000\001\217\001\208\001\209\000\000\001\218\000\000\000\000\001\134\001\208\001\209\000\000\000\000\001\218\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\001\210\002\\\001\022\000\000\001\212\001\213\001\001\001\210\001\211\000\000\000\000\001\212\001\213\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\n\001\235\002\236\002\237\001\209\001\236\000\000\001\237\001\216\000\000\000\000\001\236\000\000\001\237\001\216\000\000\000\000\001\011\000\000\001\217\002\236\002\237\001\209\000\246\001\b\000\000\007\226\000\000\000\000\000\000\001\235\001\218\000\000\000\000\001\134\000\000\000\000\000\000\001\235\000\000\001\236\000\000\001\237\001\216\003\180\000\000\000\000\000\000\001\236\000\000\001\237\001\216\002\236\002\237\001\209\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\000\000\001\218\b~\000\000\001\134\002\238\000\000\000\000\001\218\000\000\001\015\001\134\000\000\001\016\000\000\000\000\000\000\001\017\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000\000\002\239\000\000\000\000\000\000\000\000\001\236\000\000\001\237\001\216\000\000\001\022\000\000\002\240\000\000\003p\001\134\000\000\000\000\002\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\001\235\000\000\000\000\000\000\000\000\000\000\000\000\001\235\000\000\000\000\001\236\000\000\001\237\001\216\002\239\000\000\000\000\001\236\000\000\001\237\001\216\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003p\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\001\237\003s\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\001\237\003s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\001\237\003s" + "\007\179\000\240\002\237\002\238\001\210\004\169\000\240\000\247\000\250\006\162\b\230\001\131\000\247\000\250\001\135\001\136\004Y\003u\007\180\007\201\005g\007\187\001\209\001\210\002J\000\152\003{\001\129\001\149\001\209\001\210\007\188\007\202\001\205\t\004\002\238\001\210\001\131\006\165\001\170\001\135\002r\001\211\003I\007\166\000\247\001\213\001\214\b\231\001\211\001\243\001\135\001\195\001\213\001\214\003\146\006\167\007\179\b\214\002\237\002\238\001\210\006P\006\b\007\189\001q\001\135\000\152\007\205\007p\000\157\001\181\004\229\006\145\003u\007\180\007\201\001I\007\187\006\168\001\248\006L\001\007\003{\002\237\002\238\001\210\006\146\007\188\007\202\004Z\006\147\006\b\007\179\006'\001\135\007<\001\249\003&\007\190\000\247\001\152\006a\001\131\003\162\007r\001\135\001\136\005o\007\191\007>\001\158\003\146\000<\007\187\001\162\002\241\000\247\003q\001\135\006N\007\189\007s\001\218\007\188\007\205\000\240\007u\007\192\b\234\001\247\007\165\000\247\000\250\007\206\001\219\002\254\001I\001\135\006N\000\240\be\001\219\001\238\005c\001\135\000\247\001\t\t\005\007\207\003q\001\135\000\152\003z\007\184\000\157\007\190\007\189\000\255\b\206\001\163\003\162\007\195\004J\004|\b\235\007\191\007\197\003\011\002\252\b\215\001\135\001\238\002\241\003\167\003q\001\135\003\168\004|\001\252\007\199\001\253\001I\000\240\003r\007\192\002\240\000\158\006\001\000\247\000\250\007\206\007\190\001\164\003\182\006\015\001\238\003t\002\241\007\200\003q\001\135\007\191\001\236\001p\000\255\007\207\006\141\001\000\007\242\001\236\001;\bP\001\237\007f\001\238\001\217\001\135\003\184\007\195\002\r\007\212\001\238\001\217\007\197\001s\007\179\007\175\002\237\002\238\001\210\003\167\001<\001w\003\168\t\029\003\012\007\199\001=\007\254\005b\003r\004|\003u\007\180\007\201\004|\007\187\001\011\006\206\006\145\003\182\003{\001\238\003t\007\195\007\200\007\188\007\202\000\152\007\197\b\160\001\149\b\255\006\146\001\012\003r\004\138\006\153\007\208\b\005\000\247\001\t\007\199\b\242\003\184\003s\000\254\001\238\003t\001\002\003\146\000\240\007\179\004|\002\237\002\238\001\210\000\247\000\250\007\189\001\164\007\200\001\131\007\205\001\011\001\135\001\136\002\251\001A\003u\007\180\007\201\003\t\007\187\001I\b\243\004\192\b\226\003{\001\135\001\136\001\012\b\179\007\188\007\202\001\158\t\024\000\247\001\t\001\162\b\207\000\247\001\131\002\254\007\190\001\135\001\136\000\152\001\016\003\162\000\161\001\017\002\249\001\137\007\191\001\018\001\019\003\146\001I\006\021\b\016\002\241\004|\003q\001\135\b\227\007\189\004\224\006\145\002\248\b\023\000\247\003\r\007\192\005\164\003\011\006\169\000\129\001\135\007\206\001\b\006\024\006\146\005c\001\163\0008\006\170\001\015\001{\001I\007\156\b\250\002\238\001\210\007\207\001\016\b\000\b\t\001\017\b\199\002\232\007\190\001\018\001\019\001M\006\165\003\162\007\195\007\158\004|\001\174\007\191\007\197\001\131\b\238\004\137\001\135\001\136\002\241\003\167\003q\001\135\003\168\006\167\001I\007\199\001\192\004\147\001\023\003r\007\192\001&\007\147\t\r\b\166\004|\007\206\007\159\002\234\003\182\006\255\001\238\003t\003\012\007\200\001}\006\168\002\231\b\239\003\n\000\255\007\207\001\142\001\000\001\195\001\158\001;\b\180\001\175\001\162\006\255\000\247\b\252\003\184\007\195\005\226\002\238\001\210\001I\007\197\005\185\007\179\001I\002\237\002\238\001\210\003\167\001<\b\200\003\168\006v\007\153\007\199\001T\002\254\007\160\003r\000\240\003u\007\180\007\201\004\157\007\187\000\247\001\t\000\255\003\182\003{\001\238\003t\001Y\007\200\007\188\007\202\001\163\005\219\004~\003q\001\135\b\152\001\164\007\156\b\201\002\255\005\241\007\156\003\011\b\208\000\247\001\135\003\184\000\152\001\165\006\241\001\149\001\002\003\146\005\193\007\179\007\158\002\237\002\238\001\210\007\158\b\168\007\189\005\217\002\238\001\210\007\210\001\011\000\240\t\007\t\b\001A\003u\t\n\000\247\001\t\007\187\007w\007\006\007\007\000\130\003{\001\022\001\\\001\012\007\159\007\188\t\012\b\209\007\159\000\247\001\t\005\228\004\168\b\142\005\254\006\000\007\190\007\006\007\007\007\015\0008\003\162\007^\007\016\006\028\005\219\007\191\003q\001\135\003\146\003\012\001\011\005\194\002\241\001\144\003q\001\135\b\210\007\189\007\023\bo\004y\001\210\007\016\006\028\007\192\004|\004|\001\012\bl\000\152\007\206\bg\001\149\000\247\001\t\b\211\b%\000\240\001\015\001\168\004\178\000\240\001\135\000\247\000\250\007\207\001\016\000\247\001\t\001\017\001I\b\150\007\190\001\018\001\019\001M\002\235\003\162\007\195\002\237\002\238\001\210\007\191\007\197\b\169\0021\001\210\b[\005\193\002\241\003\167\003q\001\135\003\168\002\223\005\219\007\199\003q\001\135\001\023\003r\007\192\001&\004\231\t\015\002\237\002\238\001\210\004|\004|\003\182\001\016\001\238\003t\001\017\007\200\004}\007\144\001\018\001\019\003u\005\241\007\207\004|\006\145\004\188\007t\003\t\007\179\003{\002\237\002\238\001\210\t\027\003\184\007\195\002\217\004|\006\146\005U\007\197\004\200\006\178\t\019\b&\003u\t\020\003\167\001I\007\187\003\168\b_\b`\007\199\003{\000\240\003\t\003r\003\146\007\188\t\028\000\247\001\t\004|\ba\bb\001I\003\182\004|\001\238\003t\004\158\007\200\004\179\005\252\005\254\006\000\bc\006\028\005\160\b\170\002\240\004|\003\146\004|\007\179\004\210\002\237\002\238\001\210\000\139\003\184\007\189\002\241\b\156\003q\001\135\b\158\b\159\b_\b`\002\212\003u\007\180\b\188\004|\007\187\003\162\005\211\001\161\005\200\003{\ba\bb\b\157\001{\007\188\007\202\bn\002\241\000\137\003q\001\135\007\016\006\028\bc\006\028\007\190\b\157\000\240\002\254\004\227\003\162\004\234\b\\\000\247\000\250\007\191\001\131\007\148\003\146\001\135\002r\001I\002\241\001I\003q\001\135\000\152\007\189\000\193\001\149\003\164\b\165\003\n\007\176\007\192\002\213\t \003\002\005\197\003r\003\011\000\255\004\211\001\135\006\194\bZ\b]\b#\007p\003s\001}\001\238\003t\003\016\006\154\007\207\002\209\007C\004\129\b^\001\158\003\n\007\190\004|\001\162\003r\000\247\003\162\007\195\b!\001I\bi\007\191\007\197\006\145\003\182\bS\001\238\003t\002\241\003\167\003q\001\135\003\168\007r\0008\007\199\000\240\006\146\004\239\003r\007\192\006\152\000\247\000\250\005\193\bU\007\206\005\241\003\184\003\182\007s\001\238\003t\007\232\007\200\007u\001I\003\012\001\163\007\146\b\155\007\207\004|\001I\001\164\006\196\001I\007\179\001I\002\237\002\238\001\210\007G\003\184\007\195\002\204\001\165\b\190\006\148\007\197\001\011\005\241\t\019\007\157\003u\t\020\003\167\001{\007\187\003\168\001I\000\255\007\199\003{\0017\005=\003r\001\012\007\188\t\023\007\012\005\254\006\000\000\247\006\199\000\224\003\182\bH\001\238\003t\004\253\007\200\006\b\001\135\001\136\001\135\001\131\001\029\bB\001\135\002r\001\202\003\146\000\243\007\179\001I\002\237\002\238\001\210\000\247\003\184\007\189\000\240\006\171\006\246\005\254\006\000\006\b\000\247\001\t\001\135\003u\007\180\bq\001}\007\187\000\240\b\025\007p\001y\003{\005\b\000\247\000\250\001\158\007\188\007\202\005\190\001\162\001\131\000\247\001\016\001\135\002r\006\200\005\241\007\190\001I\001\018\001\019\000\236\003\162\001\216\b\158\b\159\004|\007\191\001I\006\146\003\146\007\163\001\011\006\202\002\241\007r\003q\001\135\007\183\007\189\004|\006\011\005\n\001\238\001I\001\023\007\192\004|\t\026\001\012\007\016\006\028\007s\001\030\001\163\000\247\001\t\007u\004|\006\148\001\164\007v\001\209\001\210\004|\005\193\bY\007\207\001\238\007\020\005\254\006\000\001\165\005\241\007\190\b3\000>\001\177\000\251\003\162\007\195\007\150\001\211\004q\007\191\007\197\001\213\001\214\006Y\006\028\002\254\002\241\003\167\003q\001\135\003\168\005y\b\151\007\199\005\026\002s\001\131\003r\007\192\001\135\002r\004|\001\178\004|\007\206\001I\bp\003\182\001\016\001\238\003t\001\017\007\200\007b\005\163\001\018\001\019\003\011\005\031\007\207\001\135\005\255\005\254\006\000\006\179\007\179\004|\002\237\002\238\001\210\005\173\003\184\007\195\000\255\005\162\bj\001\000\007\197\001{\001N\b]\001\023\003u\007\180\003\167\007e\007\187\003\168\001I\000\211\007\199\003{\b\r\b^\003r\000\240\007\188\b\019\001\218\001{\001P\000\247\001\t\001I\003\182\006\139\001\238\003t\004|\007\200\001\219\006\217\007W\001\135\006U\005|\006\150\005<\002\254\001\135\003\146\000\255\0008\002\254\001\000\003\012\007k\001\217\003\184\007\189\000\152\007\231\006\231\001\149\004\189\001}\004|\005\218\005\154\006\148\006\218\007\029\006\219\0008\005\188\001\158\001I\005\179\001\002\001\162\003\011\000\247\005\159\001\135\002e\003\011\001}\001I\001\135\001\179\004|\001I\006\136\001\011\007\190\001\135\001\158\001A\005\232\003\162\001\162\b\164\000\247\001\131\007\191\006\220\001\135\002r\001\236\006B\001\012\002\241\006H\003q\001\135\001\135\000\247\001\t\001\237\001\157\001\238\001\217\001\198\007\192\001\163\000\255\001\002\004|\001\000\b\022\001\164\002\237\002\238\001\210\004|\007p\001I\006<\004+\006\221\004|\001\011\001\165\000\223\007\207\001\163\001I\002E\003\012\006\222\006\223\001\164\006\224\003\012\007-\0047\000\255\007\195\001\012\000r\001\210\bk\007\197\001\165\000\247\001\t\001\015\002\254\000\156\003\167\001I\007r\003\168\006\255\001\016\007\199\007\030\001\017\004\201\003r\004|\001\018\001\019\006\193\001\157\005\248\006\001\000\255\007s\003\182\001\000\001\238\003t\007u\007\200\004|\005\184\007\133\005\198\003\011\001\002\004|\001\135\006\226\004|\0060\0008\001\023\006\228\006\238\001&\006\027\001\157\003\184\001\015\001\011\b\147\000\152\005\250\000\162\001\149\007\026\001\016\007\018\007~\001\017\001I\001\135\006#\001\018\001\019\007\031\001\012\002\240\000\247\006\255\002\254\006\012\000\247\001\t\007\027\0008\001\241\000\198\002\254\002\241\001\011\003q\001\135\000\255\001I\0067\001\000\001\201\0066\001\023\007U\001I\001&\006\026\000\247\001H\001\002\001\012\000\217\bt\006I\003\012\003\011\000\247\001\t\001\135\006M\005\210\007\182\007=\003\011\001\011\b\149\001\135\001\157\004\221\005e\002\254\007\006\007\007\004|\003\198\001\015\000\255\001I\000\155\001\000\007\173\001\012\001I\001\016\006\255\000\140\001\017\000\247\001\t\004Y\001\018\001\019\007\b\007\024\007\143\000\255\001I\007\016\006\028\007\233\003r\001I\003\011\001\173\001{\001\135\005x\001L\000\183\000\247\003s\001\002\001\238\003t\001\016\001I\001\023\001\017\001I\001&\001I\001\018\001\019\003\012\006\255\006\004\001\011\b\163\006g\006m\004\025\003\012\003\187\007\006\007\007\004|\007\130\001\015\000\255\005\135\001I\001\000\002C\001\012\006\166\001\016\001I\006\005\001\017\000\247\001\t\001\002\001\018\001\019\007\b\007\024\004|\001I\003\178\007\016\006\028\001}\006\149\005d\001\184\006\135\001\011\007\002\004\r\006\156\003\012\001\158\bf\005\174\003\172\001\162\000\187\000\247\001\023\001I\001I\001&\004|\001\012\000;\001\011\006\255\004\228\006\173\000\247\001\t\006\131\006\252\006\028\0008\007\006\007\007\005\238\006\028\001\015\001I\001I\001\012\000\191\001I\006X\006\161\001\016\000\247\001\t\001\017\b*\007w\001\002\001\018\001\019\007\b\007\024\005\167\000:\001\163\007\016\006\028\005\169\006x\004\007\001\164\006\129\001\011\004|\001I\000A\006\183\003\158\001I\007\006\007\007\001I\001\165\001\015\001\023\001I\006]\001&\001I\001\012\001I\001\016\001I\004|\001\017\000\247\001\t\006\235\001\018\001\019\007\b\007\024\005\196\001I\001I\007\016\006\028\001I\001\209\001\210\001\016\005\177\006S\001\017\001\209\001\210\004|\001\018\001\019\001I\006\208\001I\b\182\005\195\001\023\004|\005\192\001&\001\211\001\243\004|\001{\001\213\001\214\001\211\001\243\006\"\000\210\001\213\001\214\001I\007\006\007\007\b&\006\214\001\015\004|\001I\001I\001I\001\240\b;\005\208\001\016\001\209\001\210\001\017\003y\001I\001\248\001\018\001\019\b\145\b\146\006\227\001\248\004|\007\016\006\028\006\230\006>\002\237\002\238\001\210\001\211\001\243\001\249\003&\001\213\001\214\006&\005\213\001\249\003&\001I\0062\001\023\bR\001}\001&\b:\003\006\001I\007K\001I\004\231\006(\004\003\001\158\000\177\006,\006$\001\162\006\254\000\247\001\248\004|\000\255\001I\001\247\001\000\000\201\007\"\000\168\007)\001\247\007\251\007\004\004\232\004|\005\225\001\219\001\249\003&\001\135\001\209\001\210\001\219\002h\005\206\001\135\005\214\003z\005\215\001\210\001\004\002j\006\r\003z\004|\0008\001I\001I\003\245\001,\001\211\001\243\001\163\004|\001\213\001\214\005\209\001I\001\164\005\231\001\247\002q\001I\001\252\004|\001\253\007Z\001I\007/\001\252\001\165\001\253\001\219\005!\007*\001\135\001I\001I\002\240\007\129\001I\001\248\005\229\003z\004|\005n\001\210\001\002\001I\001I\002\241\001I\003q\001\135\001\236\005\227\001\209\001\210\001\249\003&\001\236\007_\001\011\004|\002\r\001I\001\238\001\217\001I\001\252\002\r\001\253\001\238\001\217\004|\005\191\001\211\001\243\003\239\001\012\001\213\001\214\005\175\005\168\005\186\000\247\001\t\007\145\001I\007}\004\234\001\247\004|\001I\002z\007\132\001\209\001\210\001I\003\211\001\236\007$\007m\001\219\004|\001\131\001\135\001\248\001\135\002r\002\r\001I\001\238\001\217\003z\007\152\001\211\001\243\003r\007#\001\213\001\214\004|\007\017\001\249\003&\005\136\003\233\003s\007\171\001\238\003t\005\027\001I\007\169\001\015\004|\007p\007\005\003\143\001\252\003!\001\253\001\016\003$\007\186\001\017\001\248\003\227\003*\001\018\001\019\0014\000\255\001I\001I\001\000\001\247\003j\001I\007\222\001I\006\240\007\203\001\249\003&\001I\001\209\001\210\001\219\003T\001\236\001\135\007r\001I\007\196\001\023\bW\006\028\001&\003z\002\r\007\001\001\238\001\217\004\148\005'\001\211\001\243\000\200\007s\001\213\001\214\007\255\000\255\007u\003\192\001\247\001I\007\140\003o\001I\001\209\001\210\001I\006%\001\252\b\020\001\253\001\219\004;\006!\001\135\001I\000\176\0061\001I\002\018\001\248\006-\003z\001I\001\211\001\243\006\001\006\215\001\213\001\214\001\002\002\017\001I\006E\001I\006\236\001I\001\249\003&\001\236\005 \003x\0069\006D\001I\001\011\003\209\003\188\001\252\002\r\001\253\001\238\001\217\006?\006\237\001\248\001\209\001\210\005\011\001I\001I\006C\001\012\001\209\001\210\003\142\bI\004\220\000\247\001\t\001\247\006\210\001\249\003&\001I\006\209\001\211\001\243\006R\001\236\001\213\001\214\001\219\001\211\001\243\001\135\001\011\001\213\001\214\002\r\006\216\001\238\001\217\003z\006W\006\025\003\204\006\182\006_\005>\006c\006k\006r\001\012\006\185\001\247\005(\001\248\006}\000\247\001\t\006\175\001I\001I\001\248\001\209\001\210\001\219\b~\001\252\001\135\001\253\001\209\001\210\001\249\003&\001\016\003\210\003z\001\017\001I\001\249\003&\001\018\001\019\001\211\001\243\001I\001I\001\213\001\214\000\190\001\211\001\243\006\174\003\216\001\213\001\214\001J\000@\001\236\006\181\003\222\000\195\001\252\003\228\001\253\001\247\004-\001\023\002\r\002I\001\238\001\217\001\247\004\222\001\248\001\016\001I\001\219\001\017\003\234\001\135\001\248\001\018\001\019\001\219\006\184\006\017\001\135\003z\003\240\006\180\001\249\003&\001\236\003\246\003z\006\234\006\\\001\249\003&\b-\0056\002\218\002\r\0073\001\238\001\217\001I\006\020\004E\001\210\003\252\004\002\002p\001\252\004\b\001\253\001\209\001\210\004\014\004\020\001\252\000\196\001\253\001\247\001I\004\026\004 \001I\004_\001\243\001\247\001I\001\213\001\214\001I\001\219\001\211\001\243\001\135\007`\001\213\001\214\001\219\006\233\001\236\001\135\003z\002\237\002\238\001\210\001I\001\236\002y\003z\002\r\007x\001\238\001\217\002\146\003\179\001I\002\r\003u\001\238\001\217\001I\004&\001\248\001\209\001\210\007\025\003{\001\252\001I\001\253\004d\002\152\005K\004,\001\252\006+\001\253\001I\001I\001\249\003&\001I\007\003\001\211\001\243\001I\001I\001\213\001\214\007\221\004:\007!\001I\001I\004@\003\146\004D\006\253\001\236\005\189\b\154\005\172\005\128\005~\001\247\001\236\004\139\007\172\002\r\007\178\001\238\001\217\001\247\000\255\001\248\002\r\001\219\001\238\001\217\001\135\007\177\003 \001\209\001\210\001\219\003#\005Y\001\135\001*\003)\0035\001\249\003&\001I\000]\003z\003n\000n\0032\007\198\0038\003P\001\211\001\243\003\162\001I\001\213\001\214\003S\003_\004z\007\131\002\153\000a\002\154\003i\002\241\005&\003q\001\135\001\251\001\252\001I\001\253\001\247\007\246\001I\003w\001I\001)\000\233\003\128\000e\001\248\001.\b9\001\219\003\141\003\151\001\135\003\157\004\127\003\171\003\177\001\236\002\151\003\186\003z\007\216\003\164\001\249\003&\001\236\003\197\002\r\001D\001\238\001\217\003\203\003\215\003\221\005\161\002\r\001\011\001\238\001\217\003\251\004\001\001\209\001\210\001[\004\019\004\031\001\252\003\167\001\253\004%\003\168\000z\0043\001\012\0049\004?\001\247\003r\003\181\000\247\001\t\001\211\001\243\000\000\000\000\001\213\001\214\003\182\001\219\001\238\003t\001\135\000\000\002\237\002\238\001\210\000\000\001\236\000\000\003z\000\000\000\000\000\000\000\000\004'\000\000\000\000\002\r\003u\001\238\001\217\003\184\001\248\000\000\001\209\001\210\000\000\003{\000\000\000\000\000\000\000\000\000\000\b\222\000\000\001\252\000\000\001\253\000\000\001\249\003&\000\000\000\000\000\000\001\211\001\243\000\000\001\016\001\213\001\214\001\017\000\000\000\000\000\000\001\018\001\019\003\146\000\000\000\000\001\131\000\000\000\000\001\135\002r\000\000\000\000\001\236\005\012\000\000\000\000\000\000\000\000\001\247\000\000\000\000\001\248\002\r\000\000\001\238\001\217\006\019\b\224\000\000\000\000\001\219\000\000\000\000\001\135\001\209\001\210\000\000\007p\001\249\003&\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\000\000\002\241\000\000\003q\001\135\001\252\000\000\001\253\000\000\001\247\000\000\007r\000\000\000\000\000\000\bJ\000\000\000\000\002\237\002\238\001\210\001\219\000\000\001\248\001\135\000\000\000\000\000\000\007s\000\000\000\000\000\000\003z\007u\003\164\000\000\001\236\007\161\000\000\000\000\001\249\003&\004\231\001\209\001\210\000\000\002\r\000\000\001\238\001\217\000\000\001\131\000\000\000\000\001\135\002r\000\000\000\000\001\252\003\167\001\253\000\000\003\168\001\211\001\243\005^\000\000\001\213\001\214\003r\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\007p\000\000\001\219\003\235\000\000\001\135\001\236\000\000\000\000\000\000\000\000\001\248\000\000\003z\000\000\000\000\002\r\000\000\001\238\001\217\003\184\000\000\000\000\001\209\001\210\000\000\000\000\000\000\001\249\003&\000\000\000\000\000\000\000\000\000\000\000\000\007r\002\240\000\000\001\252\000\000\001\253\000\000\001\211\001\243\000\000\000\000\001\213\001\214\002\241\000\000\003q\001\135\007s\000\000\000\000\000\000\000\000\007u\000\000\000\000\001\247\007y\000\000\000\000\000\000\004\015\000\000\000\000\000\000\001\236\000\000\000\000\001\219\001\248\000\000\001\135\001\209\001\210\000\000\002\r\000\000\001\238\001\217\003z\000\000\000\000\000\000\000\000\004\234\000\000\001\249\003&\000\000\000\000\000\000\000\000\001\211\001\243\001{\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\001\253\000\000\001{\000\000\000\000\003r\000\000\000\000\003\217\000\000\000\000\000\000\001\247\000\000\000\000\003s\001\248\001\238\003t\000\000\000\000\000\000\000\000\000\000\001\219\001\209\001\210\001\135\000\000\001\236\000\000\001\209\001\210\001\249\003&\003z\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\001}\001\211\001\243\001~\000\000\001\213\001\214\001\211\001\243\000\000\001\158\001\213\001\214\000\000\001\162\001}\000\247\001\252\005\156\001\253\000\000\000\000\001\247\000\000\004\180\001\158\000\000\000\000\000\000\001\162\004\t\000\247\001\248\000\000\001\219\000\000\000\000\001\135\001\248\000\000\002\237\002\238\001\210\000\000\000\000\003z\000\000\000\000\001\236\001\249\003&\000\000\000\000\000\000\000\000\001\249\003&\000\000\002\r\001\163\001\238\001\217\000\000\000\000\007\249\001\164\001\209\001\210\000\000\000\000\000\000\001\252\000\000\001\253\001\163\000\000\000\000\001\165\000\000\000\000\001\164\000\000\001\247\000\000\000\000\000\000\001\211\001\243\001\247\000\000\001\213\001\214\001\165\000\000\001\219\000\000\000\000\001\135\000\000\000\000\001\219\000\000\001\236\001\135\000\000\003z\000\000\000\000\000\000\003\173\000\000\003z\002\r\000\000\001\238\001\217\000\000\001\248\000\000\000\000\001\209\001\210\000\000\000\000\000\000\000\000\001\209\001\210\000\000\000\000\000\000\001\252\000\000\001\253\001\249\003&\000\000\001\252\000\000\001\253\001\211\001\243\002\240\000\000\001\213\001\214\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\001\236\003\223\000\000\000\000\000\000\001\247\001\236\003\241\000\000\001\248\002\r\000\000\001\238\001\217\000\000\001\248\002\r\001\219\001\238\001\217\001\135\000\000\000\000\000\000\001\209\001\210\001\249\003&\003z\000\000\000\000\000\000\001\249\003&\001{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\000\000\000\000\001\252\000\000\001\253\000\000\000\000\001\247\003r\000\000\000\000\000\000\000\000\001\247\000\000\007\223\000\000\000\000\003s\001\219\001\238\003t\001\135\001\248\000\000\001\219\000\000\000\000\001\135\000\000\003z\000\000\000\000\001\236\000\000\000\000\003z\000\000\000\000\001}\001\249\003&\005\144\002\r\000\000\001\238\001\217\000\000\000\000\001\158\000\000\001\209\001\210\001\162\000\000\000\247\001\252\000\000\001\253\000\000\000\000\000\000\001\252\000\000\001\253\000\000\000\000\000\000\002\237\002\238\001\210\001\211\001\243\001\247\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\001\236\001\135\001\209\001\210\000\000\004\231\001\236\004\170\000\000\003z\002\r\001\163\001\238\001\217\000\000\001\248\002\r\001\164\001\238\001\217\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\165\000\000\000\000\001\249\003&\000\000\001\252\000\000\001\253\000\000\000\000\000\000\000\000\000\000\004E\001\210\003\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\210\004_\001\243\001\247\001\236\001\213\001\214\000\000\001\249\003&\000\000\000\000\000\000\000\000\002\r\001\219\001\238\001\217\001\135\001\211\001\243\002\240\000\000\001\213\001\214\000\000\003z\000\000\000\000\000\000\000\000\002\146\000\000\002\241\000\000\003q\001\135\004E\001\210\000\000\000\000\001\247\004\202\000\000\000\000\000\000\000\000\000\000\004d\002\152\001\248\000\000\001\252\001\219\001\253\000\000\001\135\004_\001\243\000\000\000\000\001\213\001\214\000\000\003z\000\000\000\000\001\249\003&\000\000\000\000\000\000\000\000\004\233\001\131\000\000\000\000\001\135\002r\000\000\000\000\000\000\001\247\001\236\000\000\000\000\000\000\002\146\000\000\000\000\001\252\000\000\001\253\002\r\001\219\001\238\001\217\001\135\001{\000\000\001\247\003r\000\000\000\000\004d\002\152\007p\000\000\000\000\000\000\000\000\003s\001\219\001\238\003t\001\135\000\000\000\000\000\000\000\000\000\000\001\236\000\000\003z\000\000\000\000\000\000\000\000\004z\004{\002\153\002\r\002\154\001\238\001\217\000\000\001\209\001\210\001\247\000\000\000\000\000\000\007r\000\000\000\000\000\000\000\000\000\000\000\000\001\252\001\219\001\253\000\000\001\135\000\000\001}\001\211\001\243\005\171\007s\001\213\001\214\001\236\000\000\007u\001\158\000\000\000\000\007|\001\162\000\000\000\247\002\r\000\000\001\238\001\217\001\209\001\210\000\000\003\253\001\236\000\000\001\209\001\210\004z\007a\002\153\001\248\002\154\000\000\002\r\000\000\001\238\001\217\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\001\211\001\243\001\249\003&\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\163\000\000\000\000\000\000\001\236\005z\001\164\000\000\002\237\002\238\001\210\004\159\000\000\001\248\002\r\000\000\001\238\001\217\001\165\001\248\004E\001\210\000\000\001\247\000\000\000\000\000\000\000\000\001\209\001\210\001\249\003&\005]\000\000\000\000\001\219\001\249\003&\001\135\005_\004_\001\243\000\000\000\000\001\213\001\214\003z\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\247\000\000\005`\005t\000\000\000\000\001\247\002\146\005\137\001\252\000\000\001\253\001\219\000\000\000\000\001\135\001\248\000\000\001\219\000\000\000\000\001\135\000\000\003z\004d\002\152\000\000\000\000\000\000\003z\000\000\000\000\000\000\001\249\003&\001\131\000\000\000\000\001\135\002r\001\236\000\000\000\000\000\000\001\209\001\210\000\000\002\240\000\000\001\252\002\r\001\253\001\238\001\217\000\000\001\252\000\000\001\253\001\247\005k\000\000\003q\001\135\001\136\001\211\001\243\001\247\007p\001\213\001\214\001\219\000\000\000\000\001\135\000\000\000\000\001{\000\000\001\219\000\000\001\236\001\135\000\000\000\000\000\000\000\000\001\236\003\229\000\000\003z\002\r\000\000\001\238\001\217\000\000\001\248\002\r\000\000\001\238\001\217\005c\000\000\000\000\007r\004z\007\185\002\153\000\000\002\154\000\000\001\209\001\210\001\249\003&\000\000\001\252\000\000\001\253\000\000\000\000\007s\000\000\000\000\000\000\001{\007u\000\000\003r\000\000\007\128\001\211\001\243\000\000\001}\001\213\001\214\005\182\003s\001\236\001\238\003t\000\000\000\000\001\158\000\000\001\247\001\236\001\162\002\r\000\247\001\238\001\217\000\000\005\028\000\000\000\000\002\r\001\219\001\238\001\217\001\135\001\248\001\209\001\210\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\001\249\003&\000\000\001}\001\211\001\243\001\154\000\000\001\213\001\214\000\000\000\000\000\000\001\158\001\163\000\000\001\252\001\162\001\253\000\247\001\164\000\000\000\000\000\000\000\000\000\000\000\000\004\190\000\000\000\000\000\000\000\000\001\165\001\247\000\000\001\248\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\001\219\000\000\001\236\001\135\000\000\000\000\001}\001\249\003&\001\156\003u\003z\002\r\000\000\001\238\001\217\001\158\001\163\000\000\003{\001\162\000\000\000\247\001\164\000\000\007\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\210\001\165\000\000\001\252\000\000\001\253\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\146\001\209\001\210\000\000\001\219\001\211\001\243\001\135\000\000\001\213\001\214\000\000\000\000\000\000\000\000\003z\000\000\001\163\000\000\000\000\001\236\001\211\001\243\001\164\000\000\001\213\001\214\000\000\003\205\000\000\002\r\000\000\001\238\001\217\000\000\001\165\001\248\000\000\000\000\000\000\000\000\001\252\000n\001\253\004!\000\000\000\000\000\000\000\000\003\162\000\000\000\000\001\248\001\249\003&\000\255\000\000\000\000\b\127\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\001\249\003&\000\000\001\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\001\238\001\217\001\247\001\209\001\210\000\000\000\000\002\237\002\238\001\210\003\164\000\000\000\000\000\000\001\219\000\000\000\000\001\135\001\247\001\209\001\210\000\000\000\000\001\211\001\243\003z\000\000\001\213\001\214\000\000\001\219\bF\000\000\001\135\000\000\003\167\000\000\000\000\003\168\001\211\001\243\003z\000\000\001\213\001\214\003r\004A\000\000\000\000\000\000\000\000\001\252\000\000\001\253\001\248\003\182\000\000\001\238\003t\000\000\000\000\001\011\005\022\000\000\000\000\000\000\000\000\001\252\000\000\001\253\001\248\001\249\003&\000\000\000\000\000\000\000\000\000\000\001\012\003\184\000\000\000\000\001\236\000\000\000\247\001\t\000\000\001\249\003&\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\001\236\000\000\000\000\000\000\000\000\000\000\001\247\001\209\001\210\000\000\002\r\002\240\001\238\001\217\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\001\247\002\241\000\000\003q\001\135\001\211\001\243\003z\000\000\001\213\001\214\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\002\194\001\210\001\016\003z\000\000\001\017\000\000\000\000\003\159\001\018\001\019\000\000\000\000\001\252\000\000\001\253\001\248\000\000\000\000\000\000\001\211\003\021\000\000\000\000\001\213\001\214\000\000\000\000\000\000\001\252\000\000\001\253\000\000\001\249\003&\b\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\255\003r\002\146\001\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\003s\001\236\001\238\003t\001\209\001\210\000\000\001\247\005A\002\152\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\000\000\001\219\001\209\001\210\001\135\000\000\001\211\001\243\002\199\000\000\001\213\001\214\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\001\243\001\247\000\000\001\213\001\214\007F\004\027\000\000\000\000\000\000\000\000\000\000\000\000\001\219\001\248\001\252\001\135\001\253\000\000\000\000\000\000\000\000\bO\001\002\000\000\000\000\000\000\000\000\000\000\000\000\001\248\001\249\003&\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\005D\005I\000\000\000\000\001\236\001\249\003&\002\153\000\000\002\154\000\000\000\000\000\000\001\012\002\r\000\000\001\238\001\217\000\000\000\247\001\t\000\000\001\247\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001{\001\219\000\000\000\000\001\135\001\247\001\236\000\000\000\000\000\000\001\211\001\243\003z\000\000\001\213\001\214\002\r\001\219\001\238\001\217\001\135\000\000\000\000\000\000\000\000\001\209\001\210\000\000\003z\000\000\000\000\000\000\000\000\003\247\000\000\000\000\001\015\000\000\001\252\000\000\001\253\001\248\000\000\000\000\001\016\001\211\001\243\001\017\000\000\001\213\001\214\001\018\001\019\002\203\001\252\000\000\001\253\001}\001\249\003&\006K\000\000\000\000\000\000\000\000\000\000\000\000\001\158\004\212\001\236\000\000\001\162\000\000\000\247\000\000\000\000\001\248\001\023\000\000\002\r\001&\001\238\001\217\000\000\000\000\001\236\000\000\000\000\001\209\001\210\000\000\001\247\000\000\001\249\003&\002\r\000\000\001\238\001\217\000\000\000\000\000\000\000\000\001\219\001\209\001\210\001\135\000\000\001\211\001\243\000\000\000\000\001\213\001\214\003z\000\000\001\163\000\000\000\000\000\000\000\000\000\000\001\164\000\000\001\211\001\243\001\247\000\000\001\213\001\214\000\000\003U\000\000\000\000\001\165\000\000\000\000\000\000\001\219\001\248\001\252\001\135\001\253\000\000\000\000\000\000\000\000\004\021\000\000\003z\000\000\000\000\000\000\000\000\000\000\001\248\001\249\003&\000\255\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\001\249\003&\000\000\001\252\000\000\001\253\000\000\000\000\000\000\002\r\000\000\001\238\001\217\003\135\000\000\b\132\000\000\001\247\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\001\247\001\236\002\237\002\238\001\210\001\211\001\243\003z\000\000\001\213\001\214\002\r\001\219\001\238\001\217\001\135\000\000\003u\000\000\000\000\001\209\001\210\000\000\003z\000\000\000\000\003{\000\000\004\149\000\000\000\000\000\000\004\173\001\252\000\000\001\253\001\248\000\000\000\000\000\000\001\211\001\243\000\000\001\011\001\213\001\214\000\000\000\000\000\000\001\252\000\000\001\253\000\000\001\249\003&\003\146\000\000\000\000\002\240\000\000\001\012\000\000\000\000\000\000\001\236\000\000\000\247\001\t\000\000\000\000\002\241\001\248\003q\001\135\002\r\000\000\001\238\001\217\000\000\000\000\001\236\000\000\000\000\000\000\000\000\000\000\001\247\000\000\001\249\003B\002\r\000\000\001\238\001\217\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\003\162\000\000\000\000\000\000\000\000\003z\002\237\002\238\001\210\000\000\000n\000\000\002\241\000\000\003q\001\135\000\000\001\247\000\000\000\000\001\016\003u\000\000\001\017\002\237\002\238\001\210\001\018\001\019\001\219\003{\001\252\001\135\001\253\003r\000\000\005F\000\000\000\000\003u\000\000\000\000\000\000\000\000\003s\003\164\001\238\003t\003{\000\000\000\000\000\000\000\000\001%\004\240\000\000\000\000\000\000\000\000\003\146\000\000\000\000\001\236\000\000\000\000\000\000\001\252\000\000\001\253\000\000\003\167\000\000\002\r\003\168\001\238\001\217\000\000\003\146\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\001{\001\238\003t\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\003\162\001\238\001\217\000\000\000\000\000\000\003\184\002\237\002\238\001\210\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\003\162\000\000\000\000\000\000\003u\002\237\002\238\001\210\000\000\000\000\000\000\000\000\002\241\003{\003q\001\135\002\237\002\238\001\210\b\012\003u\000\000\001}\000\000\000\000\006A\000\000\003\164\000\000\003{\000\000\003u\001\158\000\000\000\000\b\015\001\162\000\000\000\247\000\000\003{\000\000\003\146\001\209\001\210\003\164\005C\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\003\168\001{\000\000\003\146\000\000\000\000\000\000\003r\001\211\001\243\000\000\000\000\001\213\001\214\003\146\003\167\000\000\003\182\003\168\001\238\003t\000\000\000\000\000\000\000\000\003r\001\163\000\000\000\000\000\000\000\000\000\000\001\164\000\000\000\000\003\182\003\162\001\238\003t\001\248\000\000\003\184\000\000\000\000\001\165\000\000\000\000\000\000\002\241\000\000\003q\001\135\003\162\000\000\000\000\000\000\001\249\003&\001}\003\184\000\000\b\028\000\000\003\162\002\241\000\000\003q\001\135\001\158\000\000\000\000\000\000\001\162\000\000\000\247\002\241\000\000\003q\001\135\000\000\000\000\003\164\000\000\000\000\000\000\000\255\000\000\000\000\001\000\001\247\001\209\001\210\000\000\000\000\000\000\000\000\000\000\003\164\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\003\167\000\000\003\164\003\168\001\211\001\243\005\021\000\000\001\213\001\214\003r\001\163\000\000\000\000\001E\000\000\003\167\001\164\000\000\003\168\003\182\000\000\001\238\003t\000\000\000\000\003r\003\167\000\000\001\165\003\168\000\000\001\252\000\000\001\253\001\248\003\182\003r\001\238\003t\000\000\000\000\000\000\000\000\003\184\000\000\000\000\003\182\000\000\001\238\003t\000\000\001\249\b\246\001\002\b\248\000\000\002\237\002\238\001\210\003\184\000\000\000\000\001\236\000\000\002\237\002\238\001\210\000\000\001\011\000\000\003\184\003u\002\r\000\000\001\238\001\217\000\000\000\000\000\000\003u\003{\000\000\000\000\000\000\001\247\001\012\004G\000\000\003{\000\000\000\000\000\247\001\t\000\000\005@\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\238\001\210\003\146\002\237\002\238\001\210\000\000\000\000\000\000\000\000\003\146\000\000\000\000\000\000\003u\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\003{\000\000\000\000\001\252\003{\001\253\003\166\000\000\000\000\000\000\004c\001\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\003\162\003\146\002\237\002\238\001\210\003\146\001\236\000\000\003\162\000\000\000\000\000\000\002\241\000\000\003q\001\135\002\r\003u\001\238\001\217\002\241\000\000\003q\001\135\001\023\000\000\003{\001K\000\000\000\000\000\000\000\000\005q\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\000\000\000\000\000\003u\003\162\000\000\000\000\003\164\003\162\003\146\000\000\000\000\003{\002\237\002\238\001\210\002\241\000\000\003q\001\135\002\241\000\000\003q\001\135\003\167\000\000\000\000\003\168\003u\000\000\000\000\000\000\003\167\000\000\003r\003\168\000\000\003{\000\000\000\000\000\000\003\146\003r\004\236\003\182\000\000\001\238\003t\000\000\003\164\000\000\000\000\003\182\003\164\001\238\003t\000\000\000\000\003\162\000\000\000\000\000\000\000\255\000\000\000\000\006\197\003\146\000\000\003\184\000\000\002\241\000\000\003q\001\135\003\167\000\000\003\184\003\168\003\167\000\000\000\000\003\168\000\000\000\000\003r\000\000\000\000\000\000\003r\000\000\003\162\000\000\000\000\000\000\003\182\000\000\001\238\003t\003\182\000\000\001\238\003t\002\241\003\164\003q\001\135\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003\162\000\000\000\000\003\184\000\000\000\000\000\000\003\184\000\000\003u\000\000\000\000\002\241\003\167\003q\001\135\003\168\000\000\003{\000\000\003\164\000\000\000\000\003r\004\245\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\001\011\000\000\000\000\000\000\003u\000\000\000\000\000\000\003\164\000\000\003\146\004\140\000\000\003{\000\000\000\000\000\000\001\012\003r\004S\003\184\000\000\000\000\000\247\001\t\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\003\167\000\000\000\000\003\168\000\000\000\000\002\237\002\238\001\210\003\146\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\003\182\003u\001\238\003t\000\000\000\000\003\162\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\007\214\000\000\002\241\000\000\003q\001\135\000\000\000\000\003\184\002\237\002\238\001\210\001\016\000\000\000\000\001\017\002\237\002\238\001\210\001\018\001\019\000\000\003\162\003\146\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\002\241\003\164\003q\001\135\000\000\004N\005]\002\237\002\238\001\210\000\000\001\023\000\000\005_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\003\167\000\000\003\146\003\168\000\000\003{\000\000\003\164\000\000\000\000\003r\000\000\003\162\005`\005h\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\003\167\000\000\003\146\003\168\000\000\000\000\002\237\002\238\001\210\000\000\003r\000\000\003\184\002\237\002\238\001\210\000\000\000\000\000\000\003\162\003\182\003u\001\238\003t\000\000\003\164\002\240\000\000\000\000\000\000\003{\002\241\000\000\003q\001\135\000\000\007V\003\163\005k\000\000\003q\001\135\001\136\000\000\003\184\000\000\000\000\000\000\000\000\000\000\003\167\003\162\000\000\003\168\000\000\000\000\000\000\000\000\000\000\003\146\003r\001\209\001\210\002\241\003\164\003q\001\135\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\005c\000\000\001\211\003I\007\166\000\000\001\213\001\214\000\000\000\000\003\167\001{\000\000\003\168\000\000\003\184\000\000\003\164\000\000\000\000\003r\000\000\000\000\002\237\002\238\001\210\000\000\003r\000\000\003\162\003\182\000\000\001\238\003t\000\000\000\000\002\240\003s\003u\001\238\003t\002\241\004\\\003q\001\135\003\168\005\014\003{\002\241\000\000\003q\001\135\003r\007\250\003\184\002\237\002\238\001\210\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\001}\000\000\003u\006/\000\000\000\000\003\164\000\000\003\146\000\000\001\158\003{\000\000\000\000\001\162\001\218\000\247\007\215\003\184\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\210\001\219\000\000\000\000\001\135\003\167\000\000\000\000\003\168\000\000\000\000\000\000\000\000\000\000\003\146\003r\002\194\001\210\000\000\001\211\001\243\000\000\003r\001\213\001\214\003\182\000\000\001\238\003t\000\000\002L\003\162\003s\001\163\001\238\003t\001\211\003\021\000\000\001\164\001\213\001\214\000\000\002\241\000\000\003q\001\135\000\000\000\000\003\184\001\248\001\165\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\003\162\000\000\000\000\002\146\001\249\002@\001\236\000\000\003u\002\237\002\238\001\210\002\241\003\164\003q\001\135\001\237\003{\001\238\001\217\005A\002\152\000\000\007R\003u\000\000\000\000\000\000\000\255\000\000\007\167\006\190\000\000\003{\000\000\000\000\000\000\001\247\003\167\004\242\000\000\003\168\000\000\000\000\000\000\003\164\003\146\000\000\003r\001\219\000\000\000\000\001\135\000\000\001\247\000\000\000\000\000\000\003\182\000\000\001\238\003t\003\146\000\000\000\000\000\000\001\219\000\000\000\000\001\135\003\167\000\000\000\000\003\168\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\003\184\000\000\000\000\000\000\001\252\000\000\001\253\000\000\003\182\000\000\001\238\003t\000\000\003\162\005H\000\000\002\237\002\238\001\210\000\000\002\153\000\000\002\154\000\000\000\000\002\241\000\000\003q\001\135\003\162\000\000\003u\003\184\000\000\000\000\001\236\001\011\000\000\000\000\000\000\003{\002\241\000\000\003q\001\135\002\r\005\017\001\238\001\217\000\000\000\000\000\000\001\236\001\012\000\000\002\237\002\238\001\210\003\164\000\247\001\t\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\003\146\003u\000\000\000\000\000\000\003\164\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\167\000\000\007\253\003\168\000\000\000\000\000\000\000\000\001{\000\000\003r\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\003\168\003\182\000\000\001\238\003t\000\000\003\146\003r\000\000\006\217\000\000\000\000\000\000\000\000\000\000\001\016\003\162\003\182\001\017\001\238\003t\000\000\001\018\001\019\000\000\003\184\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\002\237\002\238\001\210\006\218\b\192\006\219\003\184\000\000\000\000\000\000\000\000\001}\000\000\001\023\006;\003u\002\237\002\238\001\210\000\000\003\162\001\158\000\000\000\000\003{\001\162\003\164\000\247\000\000\000\000\007O\003u\002\241\000\000\003q\001\135\000\000\000\000\006\220\000\000\003{\000\000\000\000\000\000\000\000\000\000\007\244\000\000\000\000\000\000\000\000\003\167\000\000\003\146\003\168\000\000\000\000\000\000\000\000\000\000\000\000\003r\002\237\002\238\001\210\003\164\000\000\000\000\000\000\003\146\001\163\003\182\006\221\001\238\003t\000\000\001\164\003u\000\000\000\000\000\000\000\000\006\222\006\223\000\000\006\224\003{\000\000\001\165\000\000\003\167\000\000\007:\003\168\000\000\003\184\000\000\000\000\000\000\000\000\003r\000\000\003\162\000\000\000\000\002\237\002\238\001\210\000\000\007\030\003\182\000\000\001\238\003t\002\241\003\146\003q\001\135\003\162\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\002\241\000\000\003q\001\135\003\184\004\163\006\226\b\194\000\000\000\000\000\000\006\228\006\238\000\000\002\237\002\238\001\210\003\164\000\000\000\000\000\000\000\000\000\000\000\000\007\026\000\000\000\000\000\000\003\146\003u\000\000\000\000\000\000\003\164\003\162\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\167\007\027\007\247\003\168\002\241\000\000\003q\001\135\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\003\168\003\182\000\000\001\238\003t\000\000\003\146\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\003\182\003\164\001\238\003t\000\000\000\000\000\000\000\000\003\184\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\000\000\003\167\000\000\000\000\003\168\000\000\000\000\002\237\002\238\001\210\000\000\003r\000\000\003\162\000\000\000\000\000\000\000\000\000\000\003\164\000\000\003\182\003u\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\b\185\000\000\000\000\000\000\000\000\000\000\000\000\003\167\003\184\000\000\003\168\001\209\001\210\000\000\000\000\000\000\000\255\003r\000\000\000\000\004T\003\164\000\000\003\146\002\237\002\238\001\210\003\182\004W\001\238\003t\001\211\003I\003J\000\000\001\213\001\214\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\001\031\003\167\000\000\003{\003\168\000\000\003\184\000\000\000\255\005\020\000\000\003r\000\000\000\000\003K\000\000\002\237\002\238\001\210\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\003\162\000\000\000\000\000\000\003u\003\146\000\000\000\000\000\000\000\000\000\000\000\000\002\241\003{\003q\001\135\000\000\000\000\003\184\b\183\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\001\218\003u\003\146\000\000\000\000\003\164\000\000\000\000\000\000\000\000\003{\001\012\001\219\000\000\003\162\001\135\003\194\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\003q\001\135\003\167\001\011\000\000\003\168\000\000\000\255\000\000\000\000\001\000\003\146\003r\001;\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\003\182\003\162\001\238\003t\000\247\001\t\000\000\000\255\000\000\003\164\001\000\000\000\001<\002\241\000\000\003q\001\135\000\000\001R\000\000\000\000\004X\004^\000\000\003\184\001\016\000\000\000\255\001\017\000\000\001\236\000\000\001\018\001\019\003\167\000\000\000\000\003\168\003\162\007i\001\237\000\000\001\238\001\217\003r\000\000\003\164\000\000\000\000\000\000\002\241\000\000\003q\001\135\003\182\000\000\001\238\003t\001%\000\000\001\002\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\003\167\000\000\000\000\003\168\001\011\000\000\000\000\003\184\001A\000\000\003r\001\002\003\164\000\000\000\000\002\237\002\238\001\210\000\000\000\000\003\182\001\012\001\238\003t\001#\000\000\001\011\000\247\001\t\001{\003u\000\000\000\000\000\000\000\000\000\000\000\000\003\167\000\000\003{\003\168\000\000\000\000\001\012\003\184\004f\001\011\003r\000\000\000\247\001\t\002\237\002\238\001\210\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\001\012\000\000\000\000\003u\000\000\003\146\000\247\001\t\000\000\b(\000\000\000\000\003{\000\000\001\015\000\000\000\000\000\000\003\184\000\000\000\000\000\000\001\016\001}\000\000\001\017\bu\000\000\000\000\001\018\001\019\001M\000\000\001\158\000\000\000\000\001\015\001\162\000\255\000\247\000\000\003\146\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\006\144\003\162\001\023\000\000\000\000\001&\002\237\002\238\001\210\000\000\000\000\001\016\000\000\002\241\001\017\003q\001\135\000\000\001\018\001\019\000\000\003u\000\000\000\000\001\023\000\000\000\000\001&\000\000\001\163\003{\000\000\000\000\001\209\001\210\001\164\bL\003\162\002\237\002\238\001\210\000\000\000\000\000\000\b&\000\000\003\164\001\165\000\000\002\241\000\000\003q\001\135\001\211\001\243\000\000\000\000\001\213\001\214\003\146\000\000\000\000\b7\000\000\002=\000\000\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\003\168\001\011\000\000\000\000\000\000\000\000\000\000\003r\003\164\000\000\001\248\000\000\000\000\000\000\002\237\002\238\001\210\003\182\001\012\001\238\003t\000\000\000\000\000\000\000\247\001\t\000\000\001\249\002@\003u\000\000\000\000\000\000\004\\\003\162\000\000\003\168\004]\003{\000\000\000\000\003\184\000\000\003r\005\015\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\001{\002\240\003\146\002\237\002\238\001\210\000\000\001\219\000\000\000\000\001\135\000\000\003\184\002\241\003\164\003q\001\135\001\016\003u\000\000\001\017\000\000\000\000\000\000\001\018\001\019\000\000\003{\000\000\000\000\000\000\000\000\000\000\004\251\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\003\168\000\000\001\252\000\000\001\253\000\255\000\000\003r\001$\003\162\000\000\000\000\000\000\000\000\003\146\001}\000\000\003\182\006T\001\238\003t\002\241\000\000\003q\001\135\001\158\000\000\000\000\000\000\001\162\000\000\000\247\000\000\001\236\000\000\002\237\002\238\001\210\000\000\003r\000\000\003\184\000\000\002\r\000\000\001\238\001\217\001\209\001\210\003s\003u\001\238\003t\000\000\003\164\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\162\000\000\004V\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\163\002\241\000\000\003q\001\135\003\167\001\164\000\000\003\168\000\000\000\000\001\209\001\210\000\000\003\146\003r\000\000\000\000\001\165\000\000\000\000\001\011\000\000\006\217\001\248\003\182\000\000\001\238\003t\000\000\000\000\001\211\003I\007n\003\164\001\213\001\214\000\000\001\012\000\000\000\000\001\249\002\023\000\000\000\247\001\t\002\237\002\238\001\210\003\184\000\000\000\000\006\218\b\171\006\219\000\000\000\000\000\000\000\000\003\167\000\000\003u\003\168\003\162\000\000\000\000\000\000\000n\000\000\003r\003{\000\000\000\000\000\000\001\247\002\241\0077\003q\001\135\003\182\000\000\001\238\003t\000\000\000\000\000\000\001\219\006\220\000\000\001\135\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\003\146\000\000\000\000\001\016\003\184\000\000\001\017\000\000\003u\003\164\001\018\001\019\000\000\001\218\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\006\221\004\248\001\252\001\219\001\253\000\000\001\135\000\000\000\000\000\000\006\222\006\223\003\167\006\224\003O\003\168\000\000\000\000\000\000\000\000\000\255\000\000\003r\001\000\003\146\000\000\001;\003\162\000\000\000\000\000\000\000\000\003\182\001\236\001\238\003t\000\000\007\030\000\000\002\241\000\000\003q\001\135\002\r\000\000\001\238\001\217\001<\000\000\000\000\000\000\000\000\000\000\001V\001\209\001\210\003\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\226\000\000\000\000\000\000\000\000\006\228\006\238\001\236\003\164\003\162\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\237\007\026\001\238\001\217\002\241\000\000\003q\001\135\000\000\000\000\002\237\002\238\001\210\007{\001\002\000\000\003\167\000\000\000\000\003\168\007\027\000\000\000\000\000\000\001\248\003u\003r\000\000\000\000\001\011\000\000\000\000\000\000\001A\003{\000\000\003\182\003\164\001\238\003t\004\183\001\249\003&\000\000\000\000\000\000\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\003\184\000\000\003\167\003\146\000\000\003\168\000\000\000\000\000\000\000\000\001\209\001\210\003r\000\000\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\001\219\000\000\000\000\001\135\001\211\001\243\000\000\000\000\001\213\001\214\000\000\003\161\000\000\000\000\000\000\002B\001\015\000\000\000\000\000\000\003\184\002\237\002\238\001\210\001\016\000\000\003\162\001\017\000\000\000\000\000\000\001\018\001\019\001M\000\000\001\248\003u\001\252\002\241\001\253\003q\001\135\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\005\204\001\249\002@\000\000\000\000\000\000\001\023\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\003\164\000\000\000\000\003\146\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\001\247\000\000\000\000\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\167\001\219\000\000\003\168\001\135\000\000\000\000\000\000\000\000\000\000\003r\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\003\162\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\001\252\002\241\001\253\003q\001\135\001\248\003\184\000\000\000\000\003u\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003{\000\000\000\000\000\000\001\249\003:\003\193\000\000\000\000\003u\000\000\000\000\000\000\001\236\000\000\000\000\003\164\000\000\003{\000\255\000\000\000\000\000\000\002\r\005\023\001\238\001\217\000\000\000\000\003\146\000n\000\000\000\000\001\209\001\210\000\000\000\000\001\247\000\000\000\000\000\000\003\167\000\000\000\000\003\168\000\000\000\000\003\146\000\000\001\219\000\000\003r\001\135\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\003\182\000\000\001\238\003t\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\000\000\003u\000\000\000\000\001{\001\248\003\184\001\252\000\000\001\253\003{\002\241\000\000\003q\001\135\000\000\000\000\003\162\000\000\000\000\000\000\000\000\001\249\003.\000\000\002\237\002\238\001\210\000\000\002\241\001\011\003q\001\135\000\000\000\000\000\000\000\000\000\000\001\236\003\146\003u\000\000\000\000\000\000\003\164\000\000\000\000\001\012\002\r\003{\001\238\001\217\000\000\000\247\001\t\001\247\000\000\000\000\000\000\004\131\000\000\001}\003\164\000\000\005\151\000\000\000\000\001\219\000\000\003\167\001\135\001\158\003\168\000\000\000\000\001\162\000\000\000\247\003\146\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\167\003\162\003\182\003\168\001\238\003t\000\000\000\000\000\000\000\000\003r\0031\000\000\002\241\000\000\003q\001\135\001\252\000\000\001\253\003\182\000\000\001\238\003t\001\016\000\000\003\184\001\017\000\000\000\000\000\000\001\018\001\019\001\163\000\000\002\237\002\238\001\210\000\000\001\164\003\162\000\000\001\209\001\210\003\184\000\000\003\164\000\000\001\236\000\000\003u\001\165\002\241\000\000\003q\001\135\000\000\006\003\002\r\003{\001\238\001\217\001\211\001\243\000\000\000\000\001\213\001\214\000\000\0050\000\000\002\237\002\238\001\210\005\147\000\000\001\209\001\210\000\000\000\000\000\000\003r\000\000\005\157\000\000\003\164\003u\000\000\003\146\000\000\000\000\003\182\002\146\001\238\003t\003{\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\000\000\005-\000\000\000\000\000\000\004s\002\152\000\000\000\000\004\129\000\000\003\184\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\003\146\000\000\000\000\001\248\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\003\162\000\000\001\209\001\210\000\000\000\000\001\247\001\249\002R\001\209\001\210\000\000\002\241\000\000\003q\001\135\000\000\003\184\001\219\000\000\000\000\001\135\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\003\162\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\003\164\000\000\000\000\002\241\000\000\003q\001\135\001\219\001\248\002\153\001\135\002\154\000\000\000\000\000\000\001\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\002.\000\000\004\129\000\000\000\000\000\000\001\249\002\t\000\000\003r\003\164\000\000\000\000\000\000\000\000\001\236\000\000\000\000\001\252\003\182\001\253\001\238\003t\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\000\004\129\001\247\000\000\000\000\000\000\003\184\001\219\003r\000\000\001\135\000\000\001\236\000\000\001\219\000\000\000\000\001\135\003\182\000\000\001\238\003t\002\r\000\000\001\238\001\217\002\237\002\238\001\210\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\001\209\001\210\000\000\003u\003\184\000\000\001\252\003u\001\253\001\209\001\210\000\000\003{\001\252\000\000\001\253\003{\000\000\000\000\000\000\001\211\001\243\005\131\000\000\001\213\001\214\004\152\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\000\000\001\236\000\000\000\000\000\000\003\146\000\000\000\000\001\236\003\146\000\000\002\r\000\000\001\238\001\217\001\248\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\001\248\000\000\000\000\001\209\001\210\000\000\000\000\000\000\001\249\002\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\0025\000\000\000\000\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\003\162\000\000\000\000\000\000\003\162\000\000\000\000\000\000\000\000\000\000\000\000\001\247\002\241\000\000\003q\001\135\002\241\000\000\003q\001\135\001\247\000\000\000\000\001\219\001\248\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001\219\001\209\001\210\001\135\000\000\000\000\000\000\000\000\000\000\001\249\0028\000\000\000\000\003\164\000\000\000\000\000\000\003\164\007S\000\000\000\000\001\211\003I\003J\000\000\001\213\001\214\000\000\001\252\000\000\001\253\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\001\253\000\000\004\129\001\247\000\000\000\000\004\129\000\000\000\000\003r\003K\000\000\000\000\003r\000\000\001\219\000\000\000\000\001\135\003\182\001\236\001\238\003t\003\182\000\000\001\238\003t\000\000\000\000\001\236\002\r\000\255\001\238\001\217\001\000\001\209\001\210\001;\000\000\002\r\000\000\001\238\001\217\003\184\000\000\000\000\000\000\003\184\000\000\001\209\001\210\000\000\001\252\000\000\001\253\001\211\001\243\000\000\001@\001\213\001\214\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001\236\000\000\002\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\001\248\000\000\002\147\002\152\000\000\000\000\001\002\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\004v\000\000\000\000\001\011\000\000\000\000\000\000\001A\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\004X\004^\001\247\000\000\001\012\000\000\000\000\000\000\000\000\001\236\000\247\001\t\000\000\000\000\001\219\000\000\001\247\001\135\000\000\001\237\000\000\001\238\001\217\000\000\001\248\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\001\209\001\210\000\000\000\000\000\000\000\000\000\000\001\249\005\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\153\000\000\002\154\000\000\001\211\001\243\000\000\000\000\001\213\001\214\001\015\000\000\000\000\000\000\000\000\001\252\000\000\001\253\001\016\000\000\000\000\001\017\000\000\000\000\001\247\001\018\001\019\001M\000\000\000\000\000\000\000\000\001\236\000\000\000\000\001\248\001\219\000\000\000\000\001\135\000\000\000\000\002\r\000\000\001\238\001\217\001\236\000\000\000\000\000\000\000\000\001\023\001\249\0023\001&\000\000\002\r\000\000\001\238\001\217\000\000\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\001\209\001\210\000\000\001\252\000\000\001\253\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\001\247\000\000\000\000\000\000\003{\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\219\000\000\005*\001\135\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\002\r\000\000\001\238\001\217\003\146\000\000\002\146\001\209\001\210\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\001\252\000\000\001\253\002\179\002\152\000\000\000\000\001\211\001\243\004\205\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\000\000\001\236\000\000\003\162\000\000\000\000\000\000\001\247\001\248\000\000\000\000\002\r\000\000\001\238\001\217\002\241\000\000\003q\001\135\001\219\000\000\000\000\001\135\000\000\000\000\001\249\0022\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\003\162\003\164\000\000\000\000\000\000\000\000\003{\000\000\002\153\000\000\002\154\001\247\002\241\000\000\003q\001\135\005\003\000\000\001\209\001\210\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\003\146\003r\000\000\001\211\001\243\001\236\000\000\001\213\001\214\000\000\003\164\003\182\000\000\001\238\003t\002\r\000\000\001\238\001\217\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\001\253\000\000\000\000\000\000\000\000\000\000\000\000\001\248\003\184\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\003\162\000\000\001\249\001\250\001\209\001\210\003\182\001\236\001\238\003t\000\000\000\000\002\241\000\000\003q\001\135\000\000\002\r\000\000\001\238\001\217\007\219\000\000\000\000\001\211\003I\003J\000\000\001\213\001\214\003\184\000\000\000\000\000\000\000\000\001\247\002\237\002\238\001\210\000\000\000\000\002\237\002\238\001\210\000\000\003\164\000\000\001\219\000\000\000\000\001\135\003u\003K\000\000\000\000\000\000\003u\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\005\006\000\000\000\000\004\129\000\000\004\142\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\001\252\000\000\001\253\000\000\000\000\003\146\003\182\000\000\001\238\003t\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\001\209\001\210\000\000\003\184\001\236\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\003\162\002\237\002\238\001\210\000\000\003\162\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\003q\001\135\003u\002\241\000\000\003q\001\135\000\000\000\000\000\000\001\248\003{\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\001{\004\132\000\000\000\000\004X\004^\000\000\001\249\003k\003u\000\000\003\164\000\000\001\236\000\000\000\000\003\164\000\000\003{\000\000\003\146\000\000\000\000\001\237\000\000\001\238\001\217\000\000\007\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\001\247\000\000\000\000\000\000\004\129\000\000\003r\003\146\000\000\000\000\000\000\003r\001\219\000\000\000\000\001\135\003\182\001}\001\238\003t\005\146\003\182\000\000\001\238\003t\000\000\000\000\001\158\000\000\003\162\000\000\001\162\000\000\000\247\000\000\000\000\000\000\001\209\001\210\001{\003\184\002\241\000\000\003q\001\135\003\184\000\000\000\000\000\000\001\252\000\000\001\253\000\000\000\000\000\000\000\000\003\162\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001\209\001\210\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\003\164\000\000\001\163\000\000\000\000\000\000\001\236\000\000\001\164\000\000\001\211\001\243\000\000\002\146\001\213\001\214\002\r\000\000\001\238\001\217\001\165\000\000\001}\000\000\000\000\005\141\000\000\003\164\004\129\000\000\002\166\002\152\001\158\000\000\000\000\003r\001\162\000\000\000\247\000\000\000\000\001\248\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\001\249\002\012\000\000\000\000\003r\000\000\001\247\000\000\000\000\000\000\000\000\003\184\000\000\000\000\003\182\000\000\001\238\003t\001\219\000\000\000\000\001\135\000\000\001\163\000\000\002\237\002\238\001\210\000\000\001\164\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\003\184\000\000\003u\001\165\001\209\001\210\000\000\001\219\000\000\000\000\001\135\003{\000\000\000\000\000\000\000\000\002\153\000\000\002\154\000\000\000\000\005\000\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\001\209\001\210\001\252\003u\001\253\000\000\001\236\000\000\000\000\000\000\000\000\000\000\003{\001\248\001{\000\000\002\r\000\000\001\238\001\217\001\211\001\243\003\145\000\000\001\213\001\214\000\000\000\000\000\000\000\000\001\249\002&\000\000\001\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\002\r\000\000\001\238\001\217\003\162\000\000\000\000\002\146\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\002\241\000\000\003q\001\135\001\247\000\000\000\000\000\000\002\193\002\152\000\000\003u\001}\000\000\000\000\001\183\001\219\000\000\000\000\001\135\003{\000\000\001\158\000\000\000\000\000\000\001\162\000\000\000\247\000\000\004\215\003\162\000\000\003\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\247\002\241\000\000\003q\001\135\000\000\000\000\003\146\000\000\000\000\000\000\001\252\001\219\001\253\000\255\001\135\000\000\001\000\000\000\004\129\001N\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\001\163\000\000\000\000\000\000\000\000\003\164\001\164\003\182\000\000\001\238\003t\000\000\001P\001\236\000\000\000\000\000\000\000\000\001\165\002\153\000\255\002\154\000\000\002\r\000\000\001\238\001\217\003\162\000\000\000\000\000\000\003\184\000\000\004\129\001\209\001\210\000\000\000\000\000\000\002\241\003r\003q\001\135\000\000\000\000\001\209\001\210\000\000\000\000\000\000\003\182\001\236\001\238\003t\001\211\001\243\000\000\000\000\001\213\001\214\001\002\002\r\000\000\001\238\001\217\001\211\001\243\000\000\000\000\001\213\001\214\000\000\003\164\000\000\003\184\001\011\000\000\000\000\000\000\001A\000\000\000\000\000\000\000\000\000\000\001\248\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\000\000\000\000\001\248\000\000\000\247\001\t\004\129\000\000\001\249\002D\001\209\001\210\000\000\003r\000\000\000\000\001\011\000\000\000\000\001\249\002_\000\000\000\000\003\182\000\000\001\238\003t\007;\000\000\000\000\001\211\003I\003J\001\012\001\213\001\214\000\000\000\000\000\000\000\247\001\t\001\247\000\000\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\000\000\001\247\001\219\001\015\000\000\001\135\000\000\003K\001\209\001\210\000\000\001\016\000\000\001\219\001\017\000\000\001\135\000\000\001\018\001\019\001M\002\237\002\238\001\210\000\000\000\000\000\000\000\000\001\211\001\243\000\000\000\000\001\213\001\214\000\000\001{\003u\000\000\000\000\001\252\000\000\001\253\000\000\000\000\001\023\003{\001\016\001&\000\000\001\017\001\252\000\000\001\253\001\018\001\019\004\195\000\000\000\000\000\000\001\248\001\218\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\255\001\236\000\000\001\219\000\000\003\146\001\135\001\249\002`\003u\001\027\002\r\001\236\001\238\001\217\000\000\000\000\000\000\003{\000\000\000\000\000\000\002\r\001}\001\238\001\217\007\237\000\000\005P\000\000\000\000\000\000\000\000\001\158\002\237\002\238\001\210\001\162\000\000\000\247\001\247\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\003u\000\000\000\000\001\219\000\000\003\162\001\135\000\000\000\000\003{\000\000\000\000\000\000\004X\004^\000\000\000\000\002\241\000\000\003q\001\135\000\000\001\236\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\238\001\210\001\237\001\163\001\238\001\217\000\000\000\000\003\146\001\164\001\252\001\011\001\253\000\000\003u\000\000\000\000\003\162\000\000\000\000\003\164\001\165\000\000\003{\000\000\002\237\002\238\001\210\001\012\002\241\000\000\003q\001\135\000\000\000\247\001\t\000\000\000\000\000\000\000\000\003u\001\236\000\000\000\000\000\000\000\000\000\000\000\000\004\129\003{\000\000\002\r\003\146\001\238\001\217\003r\000\000\003\162\000\000\000\000\000\000\000\000\003\164\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\003\146\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\003\184\004\129\000\000\001\016\000\000\000\000\001\017\003u\003r\000\000\001\018\001\019\003\162\003\164\000\000\000\000\003{\000\000\003\182\000\000\001\238\003t\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\006\023\000\000\003\162\000\000\000\000\004<\003\184\000\000\000\000\003\146\003u\000\000\003r\000\000\002\241\000\000\003q\001\135\000\000\003{\000\000\003\164\003\182\000\000\001\238\003t\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\003u\000\000\000\000\000\000\003\184\003\164\003\146\004.\000\000\003{\000\000\003u\000\000\000\000\003r\001{\003\162\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\000\000\004\"\000\000\000\000\000\000\000\000\003\146\000\000\003r\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003\184\003\146\003\182\000\000\001\238\003t\000\000\003\162\000\000\003u\000\000\000\000\000\000\003\164\000\000\000\000\000\000\000\000\003{\002\241\000\000\003q\001\135\000\000\001}\000\000\003\184\001\167\000\000\000\000\000\000\000\000\000\000\000\000\001\158\000\000\000\000\000\000\001\162\003\162\000\247\004\028\000\000\000\000\000\000\000\000\000\000\003\146\003r\000\000\003\162\002\241\003\164\003q\001\135\000\000\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005#\000\000\003\184\001\163\003\164\000\000\000\000\003r\000\000\001\164\000\000\002\237\002\238\001\210\000\000\003\164\003\162\003\182\000\000\001\238\003t\001\165\002\237\002\238\001\210\000\000\003u\000\000\002\241\000\000\003q\001\135\004B\000\000\000\000\003{\000\000\003u\000\000\003r\000\000\003\184\000\000\003\242\000\000\000\000\003{\000\000\000\000\003\182\003r\001\238\003t\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003\182\003\164\001\238\003t\003\146\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\003\184\001{\003\146\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\000\000\004\213\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\003\146\001\238\003t\000\000\000\000\000\000\003\162\000\000\000\000\000\000\006\217\000\000\000\000\000\000\000\000\000\000\000\000\003\162\002\241\000\000\003q\001\135\000\000\003\184\001}\000\000\000\000\b\174\000\000\002\241\000\000\003q\001\135\000\000\001\158\002\237\002\238\001\210\001\162\006\218\000\247\006\219\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\003u\003\164\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003{\000\000\002\241\003\164\003q\001\135\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\006\220\000\000\000\000\003{\000\000\004\171\000\000\000\255\000\000\001\163\001\000\000\000\003r\000\000\003\146\001\164\004\223\000\000\000\000\000\000\003\164\000\000\003\182\003r\001\238\003t\000\000\001\165\000\000\000\000\000\000\000\000\003\146\003\182\006\221\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\222\006\223\003\184\006\224\003\200\002\237\002\238\001\210\000\000\000\000\000\000\003r\000\000\003\184\000\000\000\000\000\000\000\000\000\000\003\162\003u\003\182\000\000\001\238\003t\000\000\000\000\006\225\000\000\003{\000\000\002\241\000\000\003q\001\135\000\000\000\000\003\162\001\002\000\000\000\000\002\237\002\238\001\210\000\000\003\184\000\000\000\000\000\000\002\241\000\000\003q\001\135\001\011\006\226\000\000\003u\000\000\003\146\006\228\006\238\000\000\000\000\000\000\003\164\003{\000\000\000\000\000\000\000\000\001\012\000\255\007\026\000\000\001\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\003\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\027\004\230\000\000\003\146\000\000\000\000\000\000\000\000\003r\000\000\002\237\002\238\001\210\000\000\000\000\000\000\003\162\002\199\003\182\003\212\001\238\003t\000\000\000\000\000\000\003u\003r\000\000\002\241\000\000\003q\001\135\000\000\000\000\003{\001\015\003\182\007P\001\238\003t\000\000\000\000\003\184\001\016\000\000\000\000\001\017\002\237\002\238\001\210\001\018\001\019\003\162\000\000\000\000\001\002\000\000\000\000\000\000\000\000\003\184\003\164\003u\003\146\002\241\000\000\003q\001\135\000\000\000\000\001\011\003{\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\005{\000\000\000\000\000\000\000\247\001\t\000\000\003r\003\164\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\003\162\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\003\180\003q\001\135\000\000\003u\003\184\000\000\003r\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\182\001\015\001\238\003t\000\000\000\000\000\000\003\162\000\000\001\016\000\000\000\000\001\017\000\000\000\000\003\164\001\018\001\019\002\203\002\241\000\000\003q\001\135\000\000\003\184\003\146\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\001\023\003\248\003u\001&\000\000\000\000\000\000\000\000\003r\000\000\003\164\003{\002\237\002\238\001\210\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\002\199\000\000\003\162\000\000\000\000\000\000\003{\000\000\004\150\000\000\003\146\000\000\003\184\000\000\002\241\003r\003q\001\135\000\000\000\000\0078\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\000\003\184\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\003\162\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\001\012\002\241\000\000\003q\001\135\003\206\000\247\001\t\000\000\003u\000\000\000\000\003r\000\000\003\162\000\000\000\000\000\000\003{\000\000\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\002\237\002\238\001\210\000\000\003\164\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003u\003\184\003\146\000\000\000\000\000\000\003u\000\000\000\000\003{\000\000\001\015\000\000\000\000\003\164\003{\000\000\005\"\000\000\001\016\000\000\000\000\001\017\000\000\003r\000\000\001\018\001\019\002\203\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\003\146\000\000\000\000\000\000\003\254\000\000\003\146\002\237\002\238\001\210\000\000\003r\000\000\003\162\001\023\000\000\000\000\001&\000\000\000\000\003\184\003\182\003u\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\003\162\000\000\002\237\002\238\001\210\000\000\003\162\000\000\000\000\003\164\000\000\003\146\002\241\000\000\003q\001\135\000\000\003u\002\241\000\000\003q\001\135\002\237\002\238\001\210\000\000\003{\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\218\000\000\000\000\000\000\000\000\000\000\003u\003r\003\164\003\137\000\000\000\000\000\000\000\000\003\164\003{\000\000\003\182\003\146\001\238\003t\000\000\000\000\003\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\005?\003q\001\135\000\000\000\000\003\184\003\236\003r\003\146\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\003\162\003\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\000\000\002\241\000\000\003q\001\135\003\184\000\000\000\000\000\255\002\240\000\000\001\000\000\000\000\000\000\000\003\162\000\000\000\000\bK\000\000\000\000\002\241\000\000\003q\001\135\003r\000\000\002\241\000\000\003q\001\135\002\237\002\238\001\210\003\164\003\182\001\004\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\by\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\255\000\000\003{\001\000\000\000\000\000\003\184\003\164\000\000\003\230\000\000\000\000\000\000\000\000\000\255\000\000\003r\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\001\002\003\146\000\000\000\000\000\000\004\128\003r\002\199\000\000\000\000\000\000\000\000\003r\000\000\000\000\001\011\003s\000\000\001\238\003t\003\184\005\244\003\182\000\000\001\238\003t\000\000\005\222\000\000\000\000\000\000\000\000\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\005\247\000\000\000\000\000\000\000\000\001\002\003\184\000\000\000\000\000\000\003\162\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\001\002\001\011\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\001\011\000\000\000\000\001\012\003{\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\000\000\001\015\000\000\000\000\001\012\000\000\000\000\000\000\003\164\001\016\000\247\001\t\001\017\002\237\002\238\001\210\001\018\001\019\0014\000\000\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\191\003{\000\000\000\000\000\000\000\000\001\023\003r\000\000\001&\001\015\000\000\000\000\002\237\002\238\001\210\000\000\003\182\001\016\001\238\003t\001\017\000\000\000\000\001\015\001\018\001\019\002\203\003u\000\000\003\146\000\000\001\016\003\162\000\000\001\017\000\000\003{\000\000\001\018\001\019\003\184\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\001\023\000\000\000\000\001&\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\001\023\003\146\000\000\005\251\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\003\164\003\162\000\000\000\000\000\000\003{\000\000\002\237\002\238\001\210\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\004\004\000\255\000\000\003{\001\000\000\000\003\146\003r\000\000\003\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\003\164\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\002\199\000\000\000\000\003\184\000\000\000\000\000\000\000\000\004\022\000\000\000\000\000\255\000\000\000\000\001\000\003r\003\164\003\162\000\000\000\000\b\178\000\000\000\000\000\000\000\000\003\182\000\000\001\238\003t\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\001\002\001\004\000\000\000\000\000\000\003\162\005\r\002\237\002\238\001\210\b\135\003\184\000\000\003r\000\000\001\011\000\000\002\241\000\000\003q\001\135\000\000\003u\003\182\003\164\001\238\003t\000\000\000\000\000\000\000\000\003{\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\184\001\002\000\000\003\164\000\000\b<\002\237\002\238\001\210\000\000\000\000\000\000\003r\003\146\000\000\000\000\001\011\000\000\000\000\000\000\000\000\003u\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\003{\003\224\000\000\001\012\000\000\000\000\000\000\000\000\003r\000\247\001\t\001\015\000\000\000\000\000\000\000\000\003\184\000\000\003\182\001\016\001\238\003t\001\017\000\000\000\000\000\000\001\018\001\019\002\203\003\146\000\000\000\000\003\162\002\237\002\238\001\210\000\000\000\000\002\237\002\238\001\210\000\000\003\184\000\000\002\241\000\000\003q\001\135\003u\000\000\000\000\000\000\001\023\003u\000\000\001&\000\000\003{\000\000\001\015\000\000\000\000\003{\000\000\000\000\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\0014\003\164\003\162\000\000\000\000\000\000\000\255\000\000\000\000\001\000\003\146\000\000\000\000\000\000\002\241\003\146\003q\001\135\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001&\000\000\004\160\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\002\199\000\000\000\000\003\182\003\164\001\238\003t\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\003\162\000\000\000\000\000\000\006\128\003\162\002\237\002\238\001\210\000\000\000\000\003\184\002\241\000\000\003q\001\135\004\n\002\241\000\000\003q\001\135\003u\001\002\003r\000\000\000\000\000\000\000\000\000\000\002\199\003{\000\000\000\000\003\182\000\000\001\238\003t\001\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\164\000\000\000\000\000\000\002\202\003\164\000\000\000\000\000\000\001\012\000\000\000\000\003\184\000\000\003\146\000\247\001\t\002\237\002\238\001\210\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\004\181\000\000\000\000\000\000\003u\004(\000\000\003r\000\000\001\011\000\000\000\000\003r\003{\000\000\000\000\000\000\003\182\000\000\001\238\003t\000\000\003\182\000\000\001\238\003t\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\003\162\000\000\001\015\000\000\000\000\000\000\003\184\003\146\000\000\000\000\001\016\003\184\002\241\001\017\003q\001\135\000\000\001\018\001\019\002\203\000\000\000\000\000\000\000\000\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\001\023\000\000\003\164\001&\001\015\003{\000\000\002\237\002\238\001\210\000\000\000\000\001\016\003\162\000\000\001\017\000\000\000\000\000\000\001\018\001\019\002\203\003u\000\000\000\000\002\241\000\000\003q\001\135\000\000\004\235\003{\000\000\000\000\003\146\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\003\182\001&\001\238\003t\002\237\002\238\001\210\000\000\000\000\001\209\001\210\003\164\000\000\003\146\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\003{\001\211\003I\003J\000\000\001\213\001\214\000\000\003\162\000\000\000\000\005)\000\000\000\000\000\000\001\209\001\210\000\000\003r\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\003\182\003\146\001\238\003t\000\000\000\000\003\162\001\211\003I\003J\000\000\001\213\001\214\000\000\000\000\002\237\002\238\001\210\002\241\000\000\003q\001\135\000\000\000\000\003\184\003\164\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\003K\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\003\164\000\000\007\224\001\218\000\000\000\000\000\000\000\000\000\000\003r\000\000\002\241\000\000\003q\001\135\001\219\000\000\003\146\001\135\003\182\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\004\016\000\000\000\255\000\000\000\000\001\000\000\000\003r\000\000\001\218\000\000\000\000\000\000\000\000\000\000\003\184\003\164\003\182\000\000\001\238\003t\001\219\000\000\000\000\001\135\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\162\002\199\003u\003\184\000\000\000\000\003\174\000\000\000\000\003L\000\000\003{\002\241\003r\003q\001\135\000\000\001\236\000\000\000\000\000\000\0030\000\000\003\182\000\000\001\238\003t\001\237\000\000\001\238\001\217\000\000\000\000\000\255\000\000\000\000\001\000\000\000\000\000\001\002\003\146\000\000\003M\004^\000\000\003\164\000\255\003\184\000\000\001\000\000\000\001\236\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\238\001\217\000\000\000\000\000\000\000\000\000\000\004O\001\012\000\000\003\189\000\000\000\000\000\000\000\247\001\t\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\003\162\003\182\001\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\001\002\000\255\000\000\000\000\001\000\000\000\003\184\000\000\000\000\002\237\002\238\001\210\000\000\001\002\000\000\001\011\000\000\003D\000\000\001\015\000\000\000\000\000\000\000\000\000\000\000\000\003\164\001\016\001\011\000\000\001\017\000\000\001\012\003\026\001\018\001\019\002\203\000\000\000\247\001\t\000\000\000\000\000\000\000\000\000\000\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\004\203\001\002\000\255\000\000\000\000\001\000\001\023\003r\000\000\001&\000\000\000\000\000\000\000\000\000\000\000\000\001\011\003\182\b\218\001\238\003t\000\255\001\002\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\001\015\000\000\000\000\001\011\000\000\000\247\001\t\003\184\001\016\000\000\000\000\001\017\000\000\001\015\000\000\001\018\001\019\003\\\000\000\006\139\001\012\001\016\000\255\002\240\001\017\001\000\000\247\001\t\001\018\001\019\006\157\000\000\000\000\007\151\000\000\002\241\000\000\003q\001\135\000\000\000\000\001\023\000\000\001\002\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\001\015\000\000\001&\001\011\003<\000\000\000\000\001\002\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\002)\000\000\000\000\001\012\001\015\001\011\000\000\000\000\000\000\000\247\001\t\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\b\219\001\012\000\000\001\023\001\002\000\000\001&\000\247\001\t\000\000\003r\000\000\000\000\000\000\000\255\000\000\007\179\001\000\000\000\001\011\003s\000\000\001\238\003t\001\023\000\000\000\000\001&\000\000\000\000\000\000\t\019\000\000\000\000\t\020\000\000\001\012\007\187\001\015\000\000\000\000\000\000\000\247\001\t\000\000\000\000\001\016\007\188\000\000\001\017\000\000\005\244\000\000\001\018\001\019\006\157\000\000\001\015\006\160\000\000\000\000\000\000\000\000\001\209\001\210\001\016\000\000\000\000\001\017\000\000\b \000\000\001\018\001\019\006\144\007\179\000\000\000\000\000\000\001\023\007\189\000\000\001&\001\211\003I\007n\000\000\001\213\001\214\001\002\t\019\000\000\001\015\t\020\000\000\000\000\007\187\000\000\001\023\000\000\001\016\001&\000\000\001\017\001\011\000\000\007\188\001\018\001\019\002)\000\000\000\000\000\000\000\000\000\000\007\190\000\255\000\000\000\000\001\000\000\000\001\012\000\000\000\000\000\000\007\191\000\255\000\247\001\t\006\194\000\000\000\000\000\000\001\023\000\000\000\000\001&\000\000\000\000\007\189\000\000\000\000\000\000\000\000\007\192\000\000\t\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\001\218\007\194\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\190\000\000\001\219\001\015\007\195\001\135\000\000\000\000\000\000\007\197\007\191\001\016\000\000\000\000\001\017\000\000\000\000\001\002\001\018\001\019\000\255\000\000\007\199\001\000\000\000\000\000\000\000\006\196\000\000\007\192\000\000\t\022\001\011\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\007\200\001\011\000\000\001\023\000\000\000\000\005\251\000\000\001\012\007\194\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\001\012\000\000\000\000\000\000\007\195\001\002\000\247\006\199\000\000\007\197\000\000\001\236\000\000\000\000\007\179\000\000\000\000\000\000\000\000\000\000\001\011\001\237\007\199\001\238\001\217\000\000\000\000\000\000\000\000\t\019\000\000\000\000\t\020\000\000\007z\007\187\001\002\001\012\000\000\000\000\000\000\007\200\000\000\000\247\001\t\007\188\001\015\000\000\000\000\000\000\001\002\001\011\000\000\000\255\001\016\000\000\001\000\001\017\000\000\000\000\000\000\001\018\001\019\003^\001\016\001\011\000\000\006\200\001\012\000\000\000\000\001\018\001\019\000\000\000\247\001\t\000\000\000\000\007\189\000\000\000\000\006\146\001\012\007\137\000\000\006\202\000\000\001\023\000\247\001\t\001&\000\000\000\000\001\015\000\000\000\000\000\000\001\023\000\000\000\000\007\179\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\002\133\000\000\000\000\007\190\000\000\t\019\000\000\000\000\t\020\000\000\000\000\007\187\000\255\007\191\001\015\001\000\000\000\000\000\001\002\000\000\000\000\007\188\001\016\000\000\001\023\001\017\000\000\001&\001\015\001\018\001\019\004m\007\192\001\011\t\025\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\004a\007\179\000\000\000\000\000\000\001\012\000\000\000\000\007\194\007\189\001\023\000\247\001\t\001&\000\255\000\000\000\000\001\000\000\000\t\n\000\000\007\195\007\187\000\000\001\023\000\000\007\197\001&\000\000\000\000\000\000\000\000\007\188\000\000\000\000\000\000\000\000\000\000\000\000\007\199\000\000\000\000\001\002\000\000\007\190\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\007\191\000\000\000\000\001\011\007\200\000\255\000\000\001\015\001\000\000\000\000\000\007\189\000\000\000\000\000\000\001\016\000\000\000\000\001\017\007\192\001\012\t\021\001\018\001\019\003\023\000\000\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000\255\000\000\000\000\001\000\007\194\000\000\000\000\000\000\000\000\000\000\007\190\000\000\001\023\000\000\001\011\001&\000\000\007\195\000\000\000\000\007\191\000\000\007\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\001\012\000\000\000\000\000\000\007\199\000\000\000\247\001\t\007\192\001\015\000\000\t\011\000\000\001\002\001\011\000\000\000\255\001\016\000\000\001\000\001\017\000\000\000\000\007\200\001\018\001\019\004Q\000\000\001\011\007\194\000\000\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\000\000\007\195\000\000\001\002\001\012\000\000\007\197\000\000\000\000\001\023\000\247\001\t\001&\000\000\000\000\001\015\000\000\000\000\001\011\007\199\000\000\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\004L\000\000\000\255\001\012\000\000\001\000\007\200\000\000\000\000\000\247\001\t\000\000\000\255\000\000\001\015\001\000\000\000\000\000\001\002\000\000\000\000\000\000\001\016\000\000\001\023\001\017\000\000\001&\001\015\001\018\001\019\001d\000\000\001\011\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\001\146\000\000\000\000\000\000\000\255\001\012\000\000\001\000\000\000\000\000\001\023\000\247\001\t\001&\001\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\001\023\001\017\000\000\001&\000\000\001\018\001\019\001\148\001\002\000\000\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\001\002\000\000\000\000\000\000\000\000\001\011\000\000\000\255\000\000\000\000\001\000\000\000\000\000\001\023\000\000\001\011\001&\000\000\000\000\001\015\000\000\000\000\001\012\000\000\000\000\000\000\000\000\001\016\000\247\001\t\001\017\000\000\001\012\000\000\001\018\001\019\b{\001\002\000\247\001\t\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001&\000\000\000\000\000\000\000\000\001\002\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\001\015\000\000\000\000\000\000\001\002\001\011\000\000\000\000\001\016\000\000\001\015\001\017\000\000\000\000\000\000\001\018\001\019\002\140\001\016\001\011\000\000\001\017\001\012\000\000\000\000\001\018\001\019\002c\000\247\001\t\000\000\000\255\000\000\000\000\001\000\000\000\001\012\000\000\001\002\000\000\000\000\001\023\000\247\001\t\001&\000\255\000\000\001\015\001\000\000\000\000\000\001\023\000\000\001\011\001&\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\007M\000\255\000\000\000\000\001\000\000\000\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\001\015\000\255\000\000\000\000\001\000\000\000\000\000\000\000\001\016\000\000\001\023\001\017\000\000\001&\001\015\001\018\001\019\002\003\000\000\000\000\000\000\000\255\001\016\000\000\006\194\001\017\000\000\000\000\001\002\001\018\001\019\006\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\001\002\001\011\001&\000\000\000\000\000\000\001\015\000\000\000\000\000\000\000\000\000\000\000\000\001\023\001\016\001\011\001&\001\017\001\012\000\000\001\002\001\018\001\019\002\201\000\247\001\t\000\000\000\255\000\000\000\000\006\194\000\000\001\012\000\000\001\002\001\011\000\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\001\011\001&\000\000\001\012\000\000\006\196\000\000\000\000\000\000\000\247\001\t\000\000\000\255\000\000\000\000\006\194\000\000\001\012\000\000\000\000\001\011\000\000\000\000\000\247\001\t\001\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\001\017\001\012\000\000\001\015\001\018\001\019\0010\000\247\006\199\000\000\000\255\001\016\000\255\006\194\001\017\001\000\000\000\006\196\001\018\001\019\001\231\000\000\000\000\001\015\000\000\000\000\000\000\000\000\000\000\000\000\001\023\001\016\001\011\001&\001\017\000\000\000\000\001\015\001\018\001\019\b\137\000\000\000\000\000\000\001\023\001\016\000\000\001&\001\017\001\012\000\000\006\196\001\018\001\019\002 \000\247\006\199\000\000\000\255\000\000\000\000\006\194\000\000\000\000\001\023\001\016\001\011\001&\006\200\000\000\000\000\000\000\001\018\001\019\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001&\006\146\001\012\006\213\006\196\006\202\001\002\000\000\000\247\006\199\000\000\000\255\000\000\000\000\001\000\000\000\000\000\001\023\000\000\001\011\000\000\001\011\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\006\200\001\012\000\000\001\012\001\018\001\019\000\000\000\247\006\199\000\247\001\t\000\000\000\000\000\000\006\146\000\000\006\203\006\196\006\202\000\000\000\000\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\023\001\016\001\011\000\000\006\200\000\000\000\000\000\000\001\018\001\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\146\001\012\006\201\001\002\006\202\000\000\000\000\000\247\006\199\000\000\000\000\001\015\000\000\000\000\000\000\001\002\001\023\001\016\001\011\001\016\006\200\000\000\001\017\000\000\001\018\001\019\001\018\001\019\006i\000\000\001\011\000\000\000\000\000\000\006\146\001\012\006\205\000\000\006\202\000\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\001\012\000\255\001\002\001\023\001\000\001\023\000\247\001\t\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\001\016\000\255\000\000\006\200\001\000\000\000\000\000\001\018\001\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\006\146\000\000\006\204\000\000\006\202\000\247\001\t\000\000\000\000\001\015\000\000\000\000\000\000\000\000\000\000\000\000\001\023\001\016\000\000\000\255\001\017\001\015\001\000\000\000\001\018\001\019\002Y\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\006u\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001&\000\000\001\015\001\011\000\000\000\000\001\002\000\000\000\255\001\023\001\016\001\000\001&\001\017\000\000\000\000\000\000\001\018\001\019\002\173\001\012\001\011\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\000\000\001\002\000\000\001\023\000\247\001\t\001&\000\000\000\000\000\000\000\000\000\255\000\000\000\000\001\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\000\000\001\015\000\000\000\000\000\247\001\t\000\000\000\255\001\002\001\016\001\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\b\b\001\015\000\000\000\000\000\000\001\011\000\000\000\000\000\000\001\016\000\255\001\002\001\017\001\000\000\000\000\000\001\018\001\019\0075\000\000\000\000\000\000\001\012\000\000\001\023\000\000\001\011\001&\000\247\001\t\000\000\000\000\000\000\001\002\001\209\001\210\001\015\000\000\000\000\000\000\000\000\000\000\001\023\001\012\001\016\001&\000\000\001\017\001\011\000\247\001\t\001\018\001\019\001]\001\211\003I\007\166\000\000\001\213\001\214\000\000\000\000\000\000\000\000\001\002\001\012\000\000\000\000\000\000\000\000\000\000\000\247\001\t\000\000\000\000\000\000\000\000\001\023\001\015\001\011\001&\000\000\000\000\000\000\000\255\001\002\001\016\001\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\0016\001\012\000\000\000\000\001\015\001\011\000\000\000\247\001\t\000\000\000\255\000\000\001\016\001\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\003>\001\012\000\000\001\023\000\000\001\015\001&\000\247\001\t\000\000\000\000\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\001\218\001\018\001\019\003F\000\000\001\023\000\000\000\000\001&\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\001\015\000\000\000\000\000\000\000\000\000\000\000\255\001\002\001\016\001\000\001\023\001\017\000\000\001&\000\000\001\018\001\019\001\020\000\000\000\000\000\000\001\015\001\011\000\000\000\000\000\000\000\000\000\255\001\002\001\016\001\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\002\160\001\012\000\000\001\023\000\000\001\011\001&\000\247\001\t\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\001\023\001\236\000\000\001&\000\247\001\t\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\238\001\217\000\000\000\000\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\007\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\001\011\000\000\000\000\000\000\000\000\000\000\001\002\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\006\143\001\012\000\000\000\000\001\015\001\011\000\000\000\247\001\t\000\000\000\255\001\002\001\016\001\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\001\197\001\012\000\000\001\023\000\000\001\011\001&\000\247\001\t\000\000\000\255\000\000\007\179\001\000\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\001\023\000\000\000\000\001&\000\247\001\t\007\180\000\000\000\000\007\187\001\211\001\243\001\015\000\000\001\213\001\214\000\000\000\000\000\000\007\188\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\b,\000\000\000\000\000\000\001\015\000\255\000\000\000\000\001\000\000\000\000\000\001\002\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\001+\000\000\007\189\001\023\001\015\001\011\001&\000\000\001\244\000\000\000\000\001\002\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\002\187\001\012\000\000\001\023\000\000\001\011\001&\000\247\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\190\000\000\000\000\006\217\001\247\000\000\001\012\000\000\001\023\000\000\007\191\001&\000\247\001\t\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\001\002\000\000\007\179\000\000\000\000\000\000\000\000\007\192\000\000\000\000\006\218\000\000\006\219\007\193\000\000\001\011\000\000\000\000\000\000\001\015\007\180\000\000\000\000\007\187\000\000\000\000\000\000\001\016\007\194\000\000\001\017\000\000\001\012\007\188\001\018\001\019\000\000\000\000\000\247\001\t\001\015\007\195\000\000\000\000\000\000\006\220\007\197\000\000\001\016\000\000\000\000\001\017\000\000\000\000\000\000\001\018\001\019\000\000\000\000\007\199\001\023\000\000\001\236\001\143\007\179\000\000\007\189\000\000\000\000\000\000\000\000\000\000\002\r\000\000\001\238\001\217\000\000\000\255\007\200\006\221\001\000\001\023\007\180\000\000\005\246\007\187\000\000\000\000\001\015\006\222\006\223\000\000\006\224\001\209\001\210\007\188\001\016\000\255\000\000\001\017\001\000\007\190\000\000\001\018\001\019\000\000\000\000\000\000\000\000\000\000\000\000\007\191\000\000\001\211\002\177\000\000\007\028\001\213\001\214\000\000\000\000\001\209\001\210\000\000\000\000\000\000\000\000\000\000\007\189\001\023\007\192\000\000\001G\000\000\000\000\000\000\007\204\000\000\000\000\000\000\000\000\001\211\001\225\006\226\000\000\001\213\001\214\000\000\006\228\006\238\000\000\007\194\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\026\000\000\007\190\007\195\000\000\000\000\001\011\000\000\007\197\000\000\000\000\001\002\007\191\000\000\000\255\000\000\000\000\001\000\000\000\007\027\000\000\007\199\000\000\001\012\000\000\000\000\001\011\000\000\000\000\000\247\001\t\007\192\000\000\001\218\000\000\000\000\000\000\b\021\000\000\000\000\007\200\000\000\000\000\001\012\000\000\001\219\000\000\000\000\001\135\000\247\001\t\000\000\007\194\000\000\000\255\000\000\000\255\001\000\000\000\001\000\000\000\001\218\000\000\000\000\000\000\007\195\000\000\000\000\000\255\000\000\007\197\001\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\001:\000\000\000\000\000\000\007\199\000\000\000\000\000\000\001\016\000\000\001\002\001\017\000\000\000\000\000\000\001\018\001\019\000\000\000\000\000\000\b\177\000\000\000\000\007\200\000\000\001\011\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\001\236\001\018\001\019\000\000\000\000\000\000\000\000\001\023\001\012\000\000\001\237\000\000\001\238\001\217\000\247\001\t\001\002\000\000\001\002\000\000\000\000\000\000\001\209\001\210\000\000\000\000\000\000\001\023\001\236\000\000\001\002\001\011\000\000\001\011\000\000\000\000\000\000\000\000\001\237\000\000\001\238\001\217\001\211\001\246\000\000\001\011\001\213\001\214\001\012\000\000\001\012\000\000\000\000\000\000\000\247\001\t\000\247\001\t\000\000\000\000\000\000\000\000\001\012\000\000\b\140\001\209\001\210\000\000\000\247\001\t\000\000\000\000\001\016\001\209\001\210\001\017\000\000\000\000\000\000\001\018\001\019\000\000\000\000\000\000\000\000\001\211\002\007\000\000\000\000\001\213\001\214\000\000\000\000\001\211\001\235\000\000\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\b\129\001\023\b\134\001\209\001\210\000\000\000\000\000\000\001\016\000\000\001\016\001\017\000\000\001\017\bx\001\018\001\019\001\018\001\019\001\218\000\000\000\000\001\016\001\211\002P\001\017\000\000\001\213\001\214\001\018\001\019\001\219\001\209\001\210\001\135\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\001\023\000\000\000\000\000\000\000\000\001\209\001\210\000\000\000\000\001\211\002\020\000\000\001\023\001\213\001\214\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\001\211\002\191\001\218\000\000\001\213\001\214\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\255\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\001\218\001\209\001\210\000\000\000\000\001\237\000\000\001\238\001\217\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001\211\002\144\000\000\000\000\001\213\001\214\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\001\219\000\000\000\000\001\135\001\218\001\236\000\000\001\237\000\000\001\238\001\217\000\000\000\000\001\209\001\210\001\237\001\219\001\238\001\217\001\135\000\000\001\002\001\209\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\002$\000\000\001\011\001\213\001\214\001\236\000\000\000\000\001\211\003H\000\000\000\000\001\213\001\214\000\000\001\237\000\000\001\238\001\217\001\012\000\000\000\255\000\000\000\000\001\000\000\247\001\t\001\218\001\209\001\210\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\001\237\000\000\001\238\001\217\001\211\002\164\001\236\000\000\001\213\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\238\001\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\210\0013\000\000\000\000\000\000\000\000\001\218\000\000\000\000\001\016\000\000\000\000\001\017\000\000\000\000\001\218\001\018\001\019\001\219\001\211\002]\001\135\001\002\001\213\001\214\000\000\000\000\001\219\001\209\001\210\001\135\000\000\000\000\001\236\000\000\000\000\000\000\001\011\002\237\002\238\001\210\000\000\001\023\001\237\000\000\001\238\001\217\000\000\001\211\002\181\000\000\000\000\001\213\001\214\001\012\001\218\001\209\001\210\000\000\000\000\000\247\001\t\003\028\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001\211\001\212\000\000\000\000\001\213\001\214\002\237\002\238\001\210\000\000\001\236\002\237\002\238\001\210\000\000\000\000\000\000\000\000\000\000\001\236\001\237\000\000\001\238\001\217\001\218\000\000\000\000\000\000\000\000\001\237\002\239\001\238\001\217\000\000\0019\007\229\001\219\000\000\000\000\001\135\000\000\000\000\001\016\000\000\000\000\001\017\002\237\002\238\001\210\001\018\001\019\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\002\240\001\219\000\000\000\000\001\135\001\237\005:\001\238\001\217\000\000\000\000\001\023\002\241\000\000\003q\001\135\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\135\002\237\002\238\001\210\000\000\000\000\000\000\000\000\001\236\002\237\002\238\001\210\002\240\000\000\000\000\000\000\000\000\002\240\001\237\000\000\001\238\001\217\000\000\000\000\002\241\003\155\003q\001\135\000\000\002\241\000\000\003q\001\135\003c\000\000\000\000\000\000\001\236\002\237\002\238\001\210\000\000\000\000\000\000\002\237\002\238\001\210\001\237\003r\001\238\001\217\000\000\002\240\000\000\000\000\000\000\000\000\000\000\003s\000\000\001\238\003t\003p\000\000\002\241\001\236\003q\001\135\003\183\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\238\001\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\003s\002\240\001\238\003t\000\000\003s\000\000\001\238\003t\002\240\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\003s\000\000\001\238\003t\002\240\000\000\000\000\000\000\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\002\241\000\000\003q\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\003s\000\000\001\238\003t\000\000\000\000\000\000\000\000\003s\000\000\001\238\003t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\000\000\000\000\003r\000\000\000\000\000\000\003s\000\000\001\238\003t\000\000\000\000\003s\000\000\001\238\003t" let[@inline] goto_data = fun i -> @@ -67532,59 +67658,59 @@ end let use_file = fun lexer lexbuf : ((Parsetree.toplevel_phrase list)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2317 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2320 lexer lexbuf) and toplevel_phrase = fun lexer lexbuf : ((Parsetree.toplevel_phrase)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2297 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2300 lexer lexbuf) and parse_val_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2293 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2296 lexer lexbuf) and parse_pattern = fun lexer lexbuf : ((Parsetree.pattern)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2289 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2292 lexer lexbuf) and parse_mty_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2285 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2288 lexer lexbuf) and parse_module_type = fun lexer lexbuf : ((Parsetree.module_type)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2281 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2284 lexer lexbuf) and parse_module_expr = fun lexer lexbuf : ((Parsetree.module_expr)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2277 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2280 lexer lexbuf) and parse_mod_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2273 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2276 lexer lexbuf) and parse_mod_ext_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2269 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2272 lexer lexbuf) and parse_expression = fun lexer lexbuf : ((Parsetree.expression)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2265 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2268 lexer lexbuf) and parse_core_type = fun lexer lexbuf : ((Parsetree.core_type)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2261 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2264 lexer lexbuf) and parse_constr_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2257 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2260 lexer lexbuf) and parse_any_longident = fun lexer lexbuf : ((Longident.t)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2239 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2242 lexer lexbuf) and interface = fun lexer lexbuf : ((Parsetree.signature)) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2235 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2238 lexer lexbuf) and implementation = fun lexer lexbuf : ((Parsetree.structure)) -> @@ -67594,59 +67720,59 @@ module Incremental = struct let use_file = fun initial_position : ((Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2317 initial_position) + Obj.magic (MenhirInterpreter.start 2320 initial_position) and toplevel_phrase = fun initial_position : ((Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2297 initial_position) + Obj.magic (MenhirInterpreter.start 2300 initial_position) and parse_val_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2293 initial_position) + Obj.magic (MenhirInterpreter.start 2296 initial_position) and parse_pattern = fun initial_position : ((Parsetree.pattern) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2289 initial_position) + Obj.magic (MenhirInterpreter.start 2292 initial_position) and parse_mty_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2285 initial_position) + Obj.magic (MenhirInterpreter.start 2288 initial_position) and parse_module_type = fun initial_position : ((Parsetree.module_type) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2281 initial_position) + Obj.magic (MenhirInterpreter.start 2284 initial_position) and parse_module_expr = fun initial_position : ((Parsetree.module_expr) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2277 initial_position) + Obj.magic (MenhirInterpreter.start 2280 initial_position) and parse_mod_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2273 initial_position) + Obj.magic (MenhirInterpreter.start 2276 initial_position) and parse_mod_ext_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2269 initial_position) + Obj.magic (MenhirInterpreter.start 2272 initial_position) and parse_expression = fun initial_position : ((Parsetree.expression) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2265 initial_position) + Obj.magic (MenhirInterpreter.start 2268 initial_position) and parse_core_type = fun initial_position : ((Parsetree.core_type) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2261 initial_position) + Obj.magic (MenhirInterpreter.start 2264 initial_position) and parse_constr_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2257 initial_position) + Obj.magic (MenhirInterpreter.start 2260 initial_position) and parse_any_longident = fun initial_position : ((Longident.t) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2239 initial_position) + Obj.magic (MenhirInterpreter.start 2242 initial_position) and interface = fun initial_position : ((Parsetree.signature) MenhirInterpreter.checkpoint) -> - Obj.magic (MenhirInterpreter.start 2235 initial_position) + Obj.magic (MenhirInterpreter.start 2238 initial_position) and implementation = fun initial_position : ((Parsetree.structure) MenhirInterpreter.checkpoint) -> @@ -67654,7 +67780,7 @@ module Incremental = struct end -# 4429 "parsing/parser.mly" +# 4438 "parsing/parser.mly" -# 67661 "parsing/parser.ml" +# 67787 "parsing/parser.ml" diff --git a/configure b/configure index b80cfbd21196..21fff2b46645 100755 --- a/configure +++ b/configure @@ -56,12 +56,12 @@ if test -e '.git' ; then : fi fi # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for OCaml 5.6.0+dev0-2026-01-26. +# Generated by GNU Autoconf 2.72 for OCaml 5.6.0+dev0-2026-01-26. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # @@ -73,7 +73,6 @@ fi # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -82,12 +81,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -159,7 +159,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -189,15 +189,14 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -205,12 +204,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -228,8 +228,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else \$as_nop - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -251,14 +252,15 @@ test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else $as_nop - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do @@ -291,12 +293,13 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes -fi +fi ;; +esac fi @@ -318,7 +321,7 @@ case $- in # (((( esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -338,7 +341,8 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -377,14 +381,6 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -453,11 +449,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -471,21 +468,14 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -559,6 +549,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -607,7 +599,6 @@ esac as_echo='printf %s\n' as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -619,9 +610,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -646,10 +637,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated SHELL=${CONFIG_SHELL-/bin/sh} @@ -680,7 +673,7 @@ PACKAGE_TARNAME='ocaml' PACKAGE_VERSION='5.6.0+dev0-2026-01-26' PACKAGE_STRING='OCaml 5.6.0+dev0-2026-01-26' PACKAGE_BUGREPORT='caml-list@inria.fr' -PACKAGE_URL='http://www.ocaml.org' +PACKAGE_URL='https://ocaml.org/' ac_unique_file="runtime/interp.c" # Factoring default headers for most tests. @@ -716,6 +709,7 @@ ac_includes_default="\ ac_header_c_list= ac_func_c_list= +enable_year2038=yes ac_subst_vars='LTLIBOBJS LIBOBJS DIFF_FLAGS @@ -1084,6 +1078,8 @@ with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock +enable_largefile +enable_year2038 ' ac_precious_vars='build_alias host_alias @@ -1223,7 +1219,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" + as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1249,7 +1245,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" + as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1462,7 +1458,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" + as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1478,7 +1474,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" + as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1508,8 +1504,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1517,7 +1513,7 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1567,7 +1563,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1635,7 +1631,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1663,7 +1659,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OCaml 5.6.0+dev0-2026-01-26 to adapt to many kinds of systems. +'configure' configures OCaml 5.6.0+dev0-2026-01-26 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1677,11 +1673,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1689,10 +1685,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1801,6 +1797,8 @@ Optional Features: shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --disable-year2038 don't support timestamps after 2038 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1868,11 +1866,11 @@ Some influential environment variables: User-defined run-time library search path. CPP C preprocessor -Use these variables to override the choices made by `configure' or to help +Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . -OCaml home page: . +OCaml home page: . _ACEOF ac_status=$? fi @@ -1937,9 +1935,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF OCaml configure 5.6.0+dev0-2026-01-26 -generated by GNU Autoconf 2.71 +generated by GNU Autoconf 2.72 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1978,11 +1976,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -2020,11 +2019,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -2048,8 +2048,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -2057,10 +2057,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2080,15 +2082,15 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. */ + which can conflict with char $2 (void); below. */ #include #undef $2 @@ -2099,7 +2101,7 @@ else $as_nop #ifdef __cplusplus extern "C" #endif -char $2 (); +char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ @@ -2118,11 +2120,13 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2158,11 +2162,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -2199,12 +2204,13 @@ printf "%s\n" "$ac_try_echo"; } >&5 test $ac_status = 0; }; } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: program exited with status $ac_status" >&5 +else case e in #( + e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=$ac_status + ac_retval=$ac_status ;; +esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno @@ -2224,8 +2230,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @@ -2255,12 +2261,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - eval "$3=yes" +else case e in #( + e) eval "$3=yes" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2314,18 +2322,19 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid; break -else $as_nop - as_fn_arith $ac_mid + 1 && ac_lo=$as_val +else case e in #( + e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int @@ -2360,20 +2369,23 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=$ac_mid; break -else $as_nop - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val +else case e in #( + e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else $as_nop - ac_lo= ac_hi= +else case e in #( + e) ac_lo= ac_hi= ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. @@ -2396,8 +2408,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid -else $as_nop - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +else case e in #( + e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done @@ -2445,8 +2458,9 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : echo >>conftest.val; read $3 &6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -2487,8 +2501,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -2504,12 +2518,15 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else $as_nop - eval "$4=no" +else case e in #( + e) eval "$4=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2531,8 +2548,8 @@ printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else $as_nop - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -2556,12 +2573,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS - + ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2594,7 +2613,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by OCaml $as_me 5.6.0+dev0-2026-01-26, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -2840,10 +2859,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -2879,9 +2898,7 @@ struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; +static char *e (char **p, int i) { return p[i]; } @@ -2895,6 +2912,21 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated @@ -2922,16 +2954,19 @@ ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' -// Does the compiler advertise C99 conformance? +/* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif +// See if C++-style comments work. + #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); +extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -2981,7 +3016,6 @@ typedef const char *ccp; static inline int test_restrict (ccp restrict text) { - // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) @@ -3047,6 +3081,8 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); // Check named initializers. struct named_init ni = { @@ -3068,7 +3104,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? +/* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -3267,8 +3303,9 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac fi @@ -3296,12 +3333,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -3310,18 +3347,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. @@ -3337,11 +3374,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -3746,15 +3783,16 @@ printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_build_alias=$build_alias +else case e in #( + e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } @@ -3781,14 +3819,15 @@ printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 -else $as_nop - if test "x$host_alias" = x; then +else case e in #( + e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } @@ -3830,14 +3869,15 @@ printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 -else $as_nop - if test "x$target_alias" = x; then +else case e in #( + e) if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } @@ -3875,11 +3915,12 @@ then : if test x"$build_alias" = x then : cross_compiling=maybe -else $as_nop - if test x"$build_alias" != x"$target_alias" +else case e in #( + e) if test x"$build_alias" != x"$target_alias" then : cross_compiling=yes -fi +fi ;; +esac fi fi if test -n "$target_alias" @@ -4024,8 +4065,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_csc+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$csc"; then +else case e in #( + e) if test -n "$csc"; then ac_cv_prog_csc="$csc" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4047,7 +4088,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi csc=$ac_cv_prog_csc if test -n "$csc"; then @@ -4123,8 +4165,9 @@ fi if test ${enable_ocamldebug+y} then : enableval=$enable_ocamldebug; -else $as_nop - enable_ocamldebug=auto +else case e in #( + e) enable_ocamldebug=auto ;; +esac fi @@ -4139,8 +4182,9 @@ fi if test ${enable_dependency_generation+y} then : enableval=$enable_dependency_generation; -else $as_nop - enable_dependency_generation=auto +else case e in #( + e) enable_dependency_generation=auto ;; +esac fi @@ -4150,8 +4194,9 @@ fi if test ${enable_instrumented_runtime+y} then : enableval=$enable_instrumented_runtime; -else $as_nop - enable_instrumented_runtime=auto +else case e in #( + e) enable_instrumented_runtime=auto ;; +esac fi @@ -4176,8 +4221,9 @@ fi if test ${enable_tsan+y} then : enableval=$enable_tsan; -else $as_nop - enable_tsan=no +else case e in #( + e) enable_tsan=no ;; +esac fi @@ -4226,8 +4272,9 @@ fi if test ${enable_ocamldoc+y} then : enableval=$enable_ocamldoc; -else $as_nop - enable_ocamldoc='auto' +else case e in #( + e) enable_ocamldoc='auto' ;; +esac fi @@ -4363,11 +4410,13 @@ then : withval=$with_target_sh; if test x"$withval" = 'xno' then : launch_method_target='exe' -else $as_nop - launch_method_target="$withval" +else case e in #( + e) launch_method_target="$withval" ;; +esac fi -else $as_nop - launch_method_target='' +else case e in #( + e) launch_method_target='' ;; +esac fi @@ -4383,8 +4432,9 @@ then : *) : ocaml_additional_stublibs_dir="$withval" ;; esac -else $as_nop - ocaml_additional_stublibs_dir='' +else case e in #( + e) ocaml_additional_stublibs_dir='' ;; +esac fi @@ -4404,8 +4454,9 @@ fi if test ${enable_stdlib_manpages+y} then : enableval=$enable_stdlib_manpages; -else $as_nop - enable_stdlib_manpages='auto' +else case e in #( + e) enable_stdlib_manpages='auto' ;; +esac fi @@ -4445,8 +4496,9 @@ fi if test ${enable_function_sections+y} then : enableval=$enable_function_sections; -else $as_nop - enable_function_sections=auto +else case e in #( + e) enable_function_sections=auto ;; +esac fi @@ -4469,8 +4521,9 @@ then : *) : bindir_to_libdir="$withval" ;; esac -else $as_nop - bindir_to_libdir='' +else case e in #( + e) bindir_to_libdir='' ;; +esac fi @@ -4480,11 +4533,13 @@ then : enableval=$enable_suffixing; if test "x$enableval" = 'xno' then : suffixing=false -else $as_nop - suffixing=true +else case e in #( + e) suffixing=true ;; +esac fi -else $as_nop - suffixing=true +else case e in #( + e) suffixing=true ;; +esac fi @@ -4561,8 +4616,9 @@ then : if test x"$enable_ocamldebug" = "xyes" then : as_fn_error $? "ocamldebug requires the unix library" "$LINENO" 5 -else $as_nop - enable_ocamldebug="no" +else case e in #( + e) enable_ocamldebug="no" ;; +esac fi fi @@ -4571,12 +4627,14 @@ then : if test x"$enable_ocamldoc" = "xyes" then : as_fn_error $? "ocamldoc requires the unix and str libraries" "$LINENO" 5 -else $as_nop - enable_ocamldoc="no" - build_ocamltex=false +else case e in #( + e) enable_ocamldoc="no" + build_ocamltex=false ;; +esac fi -else $as_nop - build_ocamltex=true +else case e in #( + e) build_ocamltex=true ;; +esac fi if test x"$enable_ocamldoc" = "xno" @@ -4590,14 +4648,15 @@ fi with_ocamldoc="" enable_stdlib_manpages=no build_ocamldoc=false -else $as_nop - ocamldoc_target=ocamldoc +else case e in #( + e) ocamldoc_target=ocamldoc ocamldoc_opt_target=ocamldoc.opt with_ocamldoc=ocamldoc build_ocamldoc=true optional_libraries="$optional_libraries ocamldoc/odoc_info" ac_config_files="$ac_config_files ocamldoc/META" - + ;; +esac fi # Are we building a cross-compiler @@ -4605,8 +4664,8 @@ fi if test x"$host" = x"$target" then : cross_compiler=false -else $as_nop - # We require a non-cross compiler of the same version +else case e in #( + e) # We require a non-cross compiler of the same version { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the installed OCaml compiler can build the cross compiler" >&5 printf %s "checking if the installed OCaml compiler can build the cross compiler... " >&6; } already_installed_version="$(ocamlc -vnum)" @@ -4614,12 +4673,14 @@ printf %s "checking if the installed OCaml compiler can build the cross compiler then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (5.6.0+dev0-2026-01-26)" >&5 printf "%s\n" "yes (5.6.0+dev0-2026-01-26)" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (5.6.0+dev0-2026-01-26 vs $already_installed_version)" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (5.6.0+dev0-2026-01-26 vs $already_installed_version)" >&5 printf "%s\n" "no (5.6.0+dev0-2026-01-26 vs $already_installed_version)" >&6; } - as_fn_error $? "exiting" "$LINENO" 5 + as_fn_error $? "exiting" "$LINENO" 5 ;; +esac fi - cross_compiler=true + cross_compiler=true ;; +esac fi # Bypass libtool check for the manifest tool @@ -4633,8 +4694,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$MANIFEST_TOOL"; then +else case e in #( + e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4656,7 +4717,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then @@ -4682,8 +4744,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_MANIFEST_TOOL"; then +else case e in #( + e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4705,7 +4767,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then @@ -4748,8 +4811,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$LD"; then +else case e in #( + e) if test -n "$LD"; then ac_cv_prog_LD="$LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4771,7 +4834,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi LD=$ac_cv_prog_LD if test -n "$LD"; then @@ -4797,8 +4861,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_LD"; then +else case e in #( + e) if test -n "$ac_ct_LD"; then ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4820,7 +4884,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_LD=$ac_cv_prog_ac_ct_LD if test -n "$ac_ct_LD"; then @@ -4842,8 +4907,8 @@ test -n "$ac_ct_LD" || ac_ct_LD="false" fi fi -else $as_nop - if test -n "$ac_tool_prefix"; then +else case e in #( + e) if test -n "$ac_tool_prefix"; then for ac_prog in ld link do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. @@ -4853,8 +4918,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$LD"; then +else case e in #( + e) if test -n "$LD"; then ac_cv_prog_LD="$LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4876,7 +4941,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi LD=$ac_cv_prog_LD if test -n "$LD"; then @@ -4902,8 +4968,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_LD"; then +else case e in #( + e) if test -n "$ac_ct_LD"; then ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4925,7 +4991,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_LD=$ac_cv_prog_ac_ct_LD if test -n "$ac_ct_LD"; then @@ -4952,7 +5019,8 @@ esac LD=$ac_ct_LD fi fi - + ;; +esac fi # libtool will detect a build-to-host C toolchain but when building an OCaml # cross compiler we need the C toolchain to build the target runtime so we @@ -5087,8 +5155,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5110,7 +5178,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5132,8 +5201,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5155,7 +5224,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -5190,8 +5260,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5213,7 +5283,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5235,8 +5306,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no @@ -5275,7 +5346,8 @@ if test $ac_prog_rejected = yes; then ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5299,8 +5371,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5322,7 +5394,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5348,8 +5421,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5371,7 +5444,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -5409,8 +5483,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5432,7 +5506,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5454,8 +5529,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5477,7 +5552,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -5506,10 +5582,10 @@ fi fi -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -5581,8 +5657,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -5602,7 +5678,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -5613,8 +5689,9 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi if test -z "$ac_file" then : @@ -5623,13 +5700,14 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } @@ -5653,10 +5731,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -5666,11 +5744,12 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -5686,6 +5765,8 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -5725,26 +5806,27 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use \`--target'. -See \`config.log' for more details" "$LINENO" 5; } +If you meant to cross compile, use '--target'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5776,16 +5858,18 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -5796,8 +5880,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5814,12 +5898,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -5837,8 +5923,8 @@ printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -5856,8 +5942,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" +else case e in #( + e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5872,8 +5958,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5890,12 +5976,15 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -5922,8 +6011,8 @@ printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c11=no +else case e in #( + e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5940,25 +6029,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CC=$ac_save_CC ;; +esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c11" = x +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" + CC="$CC $ac_cv_prog_cc_c11" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 + ac_prog_cc_stdc=c11 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -5968,8 +6060,8 @@ printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c99=no +else case e in #( + e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5986,25 +6078,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CC=$ac_save_CC ;; +esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c99" = x +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" + CC="$CC $ac_cv_prog_cc_c99" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_prog_cc_stdc=c99 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -6014,8 +6109,8 @@ printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c89=no +else case e in #( + e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6032,25 +6127,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CC=$ac_save_CC ;; +esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c89" = x +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" + CC="$CC $ac_cv_prog_cc_c89" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 + ac_prog_cc_stdc=c89 ;; +esac fi fi @@ -6065,8 +6163,8 @@ printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done @@ -6091,9 +6189,10 @@ do as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in +case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -6128,7 +6227,8 @@ IFS=$as_save_IFS else ac_cv_path_SED=$SED fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } @@ -6153,8 +6253,8 @@ printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -z "$GREP"; then +else case e in #( + e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6173,9 +6273,10 @@ do as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in +case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -6210,7 +6311,8 @@ IFS=$as_save_IFS else ac_cv_path_GREP=$GREP fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } @@ -6222,8 +6324,8 @@ printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 -else $as_nop - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +else case e in #( + e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then @@ -6245,9 +6347,10 @@ do as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in +case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -6283,20 +6386,23 @@ else ac_cv_path_EGREP=$EGREP fi - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" + EGREP_TRADITIONAL=$EGREP + ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 -else $as_nop - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +else case e in #( + e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then @@ -6318,9 +6424,10 @@ do as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in +case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -6356,7 +6463,8 @@ else ac_cv_path_FGREP=$FGREP fi - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } @@ -6387,8 +6495,9 @@ test -z "$GREP" && GREP=grep if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else $as_nop - with_gnu_ld=no +else case e in #( + e) with_gnu_ld=no ;; +esac fi ac_prog=ld @@ -6433,8 +6542,8 @@ fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -z "$LD"; then +else case e in #( + e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs @@ -6457,7 +6566,8 @@ else $as_nop IFS=$lt_save_ifs else lt_cv_path_LD=$LD # Let the user override the test with a path. -fi +fi ;; +esac fi LD=$lt_cv_path_LD @@ -6474,8 +6584,8 @@ printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 -else $as_nop - # I'd rather use --version here, but apparently some GNU lds only accept -v. +else case e in #( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 @@ -6502,8 +6613,8 @@ printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$NM"; then +else case e in #( + e) if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else @@ -6550,7 +6661,8 @@ else IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} -fi +fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } @@ -6571,8 +6683,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DUMPBIN"; then +else case e in #( + e) if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6594,7 +6706,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then @@ -6620,8 +6733,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DUMPBIN"; then +else case e in #( + e) if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6643,7 +6756,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then @@ -6697,8 +6811,8 @@ printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_nm_interface="BSD nm" +else case e in #( + e) lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) @@ -6711,7 +6825,8 @@ else $as_nop if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi - rm -f conftest* + rm -f conftest* ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } @@ -6733,8 +6848,8 @@ printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 -else $as_nop - i=0 +else case e in #( + e) i=0 teststring=ABCD case $build_os in @@ -6856,7 +6971,8 @@ else $as_nop fi ;; esac - + ;; +esac fi if test -n "$lt_cv_sys_max_cmd_len"; then @@ -6913,8 +7029,8 @@ printf %s "checking how to convert $build file names to $target format... " >&6; if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 -else $as_nop - case $target in +else case e in #( + e) case $target in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys @@ -6945,7 +7061,8 @@ else $as_nop lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac - + ;; +esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd @@ -6961,8 +7078,8 @@ printf %s "checking how to convert $build file names to toolchain format... " >& if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 -else $as_nop - #assume ordinary cross tools, or native build. +else case e in #( + e) #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $target in *-*-mingw* | *-*-windows* ) @@ -6973,7 +7090,8 @@ case $target in esac ;; esac - + ;; +esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd @@ -6989,8 +7107,9 @@ printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_reload_flag='-r' +else case e in #( + e) lt_cv_ld_reload_flag='-r' ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } @@ -7030,8 +7149,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$FILECMD"; then +else case e in #( + e) if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7054,7 +7173,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" -fi +fi ;; +esac fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then @@ -7080,8 +7200,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$OBJDUMP"; then +else case e in #( + e) if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7103,7 +7223,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then @@ -7125,8 +7246,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OBJDUMP"; then +else case e in #( + e) if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7148,7 +7269,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then @@ -7189,8 +7311,8 @@ printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_file_magic_cmd='$MAGIC_CMD' +else case e in #( + e) lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support @@ -7390,7 +7512,8 @@ os2*) lt_cv_deplibs_check_method=pass_all ;; esac - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } @@ -7442,8 +7565,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DLLTOOL"; then +else case e in #( + e) if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7465,7 +7588,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then @@ -7487,8 +7611,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DLLTOOL"; then +else case e in #( + e) if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7510,7 +7634,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then @@ -7552,8 +7677,8 @@ printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_sharedlib_from_linklib_cmd='unknown' +else case e in #( + e) lt_cv_sharedlib_from_linklib_cmd='unknown' case $target_os in cygwin* | mingw* | windows* | pw32* | cegcc*) @@ -7573,7 +7698,8 @@ cygwin* | mingw* | windows* | pw32* | cegcc*) lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } @@ -7595,8 +7721,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$RANLIB"; then +else case e in #( + e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7618,7 +7744,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then @@ -7640,8 +7767,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_RANLIB"; then +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7663,7 +7790,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then @@ -7699,8 +7827,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$AR"; then +else case e in #( + e) if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7722,7 +7850,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi AR=$ac_cv_prog_AR if test -n "$AR"; then @@ -7748,8 +7877,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_AR"; then +else case e in #( + e) if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7771,7 +7900,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then @@ -7833,8 +7963,8 @@ printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_ar_at_file=no +else case e in #( + e) lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7871,7 +8001,8 @@ then : fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } @@ -7896,8 +8027,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$STRIP"; then +else case e in #( + e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7919,7 +8050,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then @@ -7941,8 +8073,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_STRIP"; then +else case e in #( + e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7964,7 +8096,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then @@ -8051,8 +8184,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$AWK"; then +else case e in #( + e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -8074,7 +8207,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then @@ -8123,8 +8257,8 @@ printf %s "checking command to parse $NM output from $compiler object... " >&6; if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] @@ -8376,7 +8510,8 @@ _LT_EOF lt_cv_sys_global_symbol_pipe= fi done - + ;; +esac fi if test -z "$lt_cv_sys_global_symbol_pipe"; then @@ -8440,8 +8575,9 @@ printf %s "checking for sysroot... " >&6; } if test ${with_sysroot+y} then : withval=$with_sysroot; -else $as_nop - with_sysroot=no +else case e in #( + e) with_sysroot=no ;; +esac fi @@ -8478,8 +8614,8 @@ printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 -else $as_nop - printf 0123456789abcdef0123456789abcdef >conftest.i +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then @@ -8515,7 +8651,8 @@ else ac_cv_path_lt_DD=$lt_DD fi -rm -f conftest.i conftest2.i conftest.out +rm -f conftest.i conftest2.i conftest.out ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } @@ -8526,8 +8663,8 @@ printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 -else $as_nop - printf 0123456789abcdef0123456789abcdef >conftest.i +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then @@ -8535,7 +8672,8 @@ if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; the && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } @@ -8745,8 +8883,8 @@ printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_ext=c +else case e in #( + e) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -8766,8 +8904,9 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes -else $as_nop - lt_cv_cc_needs_belf=no +else case e in #( + e) lt_cv_cc_needs_belf=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext @@ -8776,7 +8915,8 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } @@ -8834,8 +8974,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$MANIFEST_TOOL"; then +else case e in #( + e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -8857,7 +8997,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then @@ -8879,8 +9020,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_MANIFEST_TOOL"; then +else case e in #( + e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -8902,7 +9043,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then @@ -8934,15 +9076,16 @@ printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_manifest_tool+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_path_manifest_tool=no +else case e in #( + e) lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi - rm -f conftest* + rm -f conftest* ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } @@ -8965,8 +9108,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DSYMUTIL"; then +else case e in #( + e) if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -8988,7 +9131,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then @@ -9010,8 +9154,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DSYMUTIL"; then +else case e in #( + e) if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9033,7 +9177,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then @@ -9067,8 +9212,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$NMEDIT"; then +else case e in #( + e) if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9090,7 +9235,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then @@ -9112,8 +9258,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_NMEDIT"; then +else case e in #( + e) if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9135,7 +9281,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then @@ -9169,8 +9316,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$LIPO"; then +else case e in #( + e) if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9192,7 +9339,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then @@ -9214,8 +9362,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_LIPO"; then +else case e in #( + e) if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9237,7 +9385,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then @@ -9271,8 +9420,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$OTOOL"; then +else case e in #( + e) if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9294,7 +9443,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then @@ -9316,8 +9466,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OTOOL"; then +else case e in #( + e) if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9339,7 +9489,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then @@ -9373,8 +9524,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$OTOOL64"; then +else case e in #( + e) if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9396,7 +9547,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then @@ -9418,8 +9570,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OTOOL64"; then +else case e in #( + e) if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9441,7 +9593,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then @@ -9498,8 +9651,8 @@ printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_apple_cc_single_mod=no +else case e in #( + e) lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE @@ -9525,7 +9678,8 @@ else $as_nop fi rm -rf libconftest.dylib* rm -f conftest.* - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } @@ -9537,8 +9691,8 @@ printf %s "checking for -no_fixup_chains linker flag... " >&6; } if test ${lt_cv_support_no_fixup_chains+y} then : printf %s "(cached) " >&6 -else $as_nop - save_LDFLAGS=$LDFLAGS +else case e in #( + e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9554,15 +9708,17 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_support_no_fixup_chains=yes -else $as_nop - lt_cv_support_no_fixup_chains=no - +else case e in #( + e) lt_cv_support_no_fixup_chains=no + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } @@ -9572,8 +9728,8 @@ printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_exported_symbols_list=no +else case e in #( + e) lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" @@ -9591,13 +9747,15 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes -else $as_nop - lt_cv_ld_exported_symbols_list=no +else case e in #( + e) lt_cv_ld_exported_symbols_list=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } @@ -9607,8 +9765,8 @@ printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_force_load=no +else case e in #( + e) lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF @@ -9633,7 +9791,8 @@ _LT_EOF fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } @@ -9792,8 +9951,9 @@ then : IFS=$lt_save_ifs ;; esac -else $as_nop - enable_shared=yes +else case e in #( + e) enable_shared=yes ;; +esac fi @@ -9824,8 +9984,9 @@ then : IFS=$lt_save_ifs ;; esac -else $as_nop - enable_static=yes +else case e in #( + e) enable_static=yes ;; +esac fi @@ -9855,8 +10016,8 @@ then : IFS=$lt_save_ifs ;; esac -else $as_nop - # Check whether --with-pic was given. +else case e in #( + e) # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} @@ -9875,11 +10036,13 @@ then : IFS=$lt_save_ifs ;; esac -else $as_nop - pic_mode=default +else case e in #( + e) pic_mode=default ;; +esac fi - + ;; +esac fi @@ -9909,8 +10072,9 @@ then : IFS=$lt_save_ifs ;; esac -else $as_nop - enable_fast_install=yes +else case e in #( + e) enable_fast_install=yes ;; +esac fi @@ -9936,8 +10100,8 @@ then : ;; esac lt_cv_with_aix_soname=$enable_aix_soname -else $as_nop - # Check whether --with-aix-soname was given. +else case e in #( + e) # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in @@ -9948,17 +10112,20 @@ then : ;; esac lt_cv_with_aix_soname=$with_aix_soname -else $as_nop - if test ${lt_cv_with_aix_soname+y} +else case e in #( + e) if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_with_aix_soname=aix +else case e in #( + e) lt_cv_with_aix_soname=aix ;; +esac fi - + ;; +esac fi - enable_aix_soname=$lt_cv_with_aix_soname + enable_aix_soname=$lt_cv_with_aix_soname ;; +esac fi with_aix_soname=$enable_aix_soname @@ -10050,8 +10217,8 @@ printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 -else $as_nop - rm -f .libs 2>/dev/null +else case e in #( + e) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs @@ -10059,7 +10226,8 @@ else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi -rmdir .libs 2>/dev/null +rmdir .libs 2>/dev/null ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } @@ -10120,8 +10288,8 @@ printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 -else $as_nop - case $MAGIC_CMD in +else case e in #( + e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; @@ -10164,6 +10332,7 @@ _LT_EOF IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; +esac ;; esac fi @@ -10187,8 +10356,8 @@ printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 -else $as_nop - case $MAGIC_CMD in +else case e in #( + e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; @@ -10231,6 +10400,7 @@ _LT_EOF IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; +esac ;; esac fi @@ -10330,8 +10500,8 @@ printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_rtti_exceptions=no +else case e in #( + e) lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment @@ -10359,7 +10529,8 @@ else $as_nop fi fi $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } @@ -10739,8 +10910,9 @@ printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } @@ -10755,8 +10927,8 @@ printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic_works=no +else case e in #( + e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment @@ -10784,7 +10956,8 @@ else $as_nop fi fi $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } @@ -10820,8 +10993,8 @@ printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_static_works=no +else case e in #( + e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext @@ -10842,7 +11015,8 @@ else $as_nop fi $RM -r conftest* LDFLAGS=$save_LDFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } @@ -10864,8 +11038,8 @@ printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_c_o=no +else case e in #( + e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest @@ -10905,7 +11079,8 @@ else $as_nop cd .. $RM -r conftest $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -10920,8 +11095,8 @@ printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_c_o=no +else case e in #( + e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest @@ -10961,7 +11136,8 @@ else $as_nop cd .. $RM -r conftest $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -11560,8 +11736,8 @@ else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11593,7 +11769,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi - + ;; +esac fi aix_libpath=$lt_cv_aix_libpath_ @@ -11615,8 +11792,8 @@ else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11648,7 +11825,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi - + ;; +esac fi aix_libpath=$lt_cv_aix_libpath_ @@ -11899,8 +12077,8 @@ printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler__b=no +else case e in #( + e) lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext @@ -11921,7 +12099,8 @@ else $as_nop fi $RM -r conftest* LDFLAGS=$save_LDFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } @@ -11969,8 +12148,8 @@ printf %s "checking whether the $target_os linker accepts -exported_symbol... " if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 -else $as_nop - save_LDFLAGS=$LDFLAGS +else case e in #( + e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11979,12 +12158,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes -else $as_nop - lt_cv_irix_exported_symbol=no +else case e in #( + e) lt_cv_irix_exported_symbol=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS + LDFLAGS=$save_LDFLAGS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } @@ -12317,8 +12498,8 @@ printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 -else $as_nop - $RM conftest* +else case e in #( + e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -12354,7 +12535,8 @@ else $as_nop cat conftest.err 1>&5 fi $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } @@ -12935,8 +13117,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : shlibpath_var=LD_LIBRARY_PATH -else $as_nop - shlibpath_var=LD_32_LIBRARY_PATH +else case e in #( + e) shlibpath_var=LD_32_LIBRARY_PATH ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; @@ -13117,8 +13300,8 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_shlibpath_overrides_runpath=no +else case e in #( + e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ @@ -13145,7 +13328,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir - + ;; +esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath @@ -13774,8 +13958,9 @@ printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } @@ -13790,8 +13975,8 @@ printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic_works=no +else case e in #( + e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment @@ -13819,7 +14004,8 @@ else $as_nop fi fi $RM conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } @@ -13849,8 +14035,8 @@ printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_static_works=no +else case e in #( + e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext @@ -13871,7 +14057,8 @@ else $as_nop fi $RM -r conftest* LDFLAGS=$save_LDFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } @@ -14092,16 +14279,22 @@ printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char dlopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); int main (void) { @@ -14113,24 +14306,27 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes -else $as_nop - ac_cv_lib_dl_dlopen=no +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else $as_nop - +else case e in #( + e) lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes - + ;; +esac fi ;; @@ -14148,22 +14344,28 @@ fi if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char shl_load (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (void); int main (void) { @@ -14175,39 +14377,47 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes -else $as_nop - ac_cv_lib_dld_shl_load=no +else case e in #( + e) ac_cv_lib_dld_shl_load=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else $as_nop - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +else case e in #( + e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char dlopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); int main (void) { @@ -14219,34 +14429,42 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes -else $as_nop - ac_cv_lib_dl_dlopen=no +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char dlopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); int main (void) { @@ -14258,34 +14476,42 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes -else $as_nop - ac_cv_lib_svld_dlopen=no +else case e in #( + e) ac_cv_lib_svld_dlopen=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char dld_link (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (void); int main (void) { @@ -14297,12 +14523,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes -else $as_nop - ac_cv_lib_dld_dld_link=no +else case e in #( + e) ac_cv_lib_dld_dld_link=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } @@ -14311,19 +14539,24 @@ then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi - + ;; +esac fi - + ;; +esac fi - + ;; +esac fi - + ;; +esac fi - + ;; +esac fi ;; @@ -14351,8 +14584,8 @@ printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 -else $as_nop - if test yes = "$cross_compiling"; then : +else case e in #( + e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -14446,7 +14679,8 @@ _LT_EOF fi rm -fr conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } @@ -14458,8 +14692,8 @@ printf %s "checking whether a statically linked program can dlopen itself... " > if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 -else $as_nop - if test yes = "$cross_compiling"; then : +else case e in #( + e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -14553,7 +14787,8 @@ _LT_EOF fi rm -fr conftest* - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } @@ -14727,8 +14962,8 @@ printf %s "checking if $CC generates a .note.GNU-stack section... " >&6; } if test ${ocaml_cv_prog_cc_nonexecstack_note+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) saved_CC="$CC" saved_CFLAGS="$CFLAGS" saved_CPPFLAGS="$CPPFLAGS" @@ -14767,7 +15002,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$saved_CFLAGS" CC="$saved_CC" LIBS="$saved_LIBS" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_nonexecstack_note" >&5 printf "%s\n" "$ocaml_cv_prog_cc_nonexecstack_note" >&6; } @@ -14777,8 +15013,9 @@ then : with_nonexecstack_note=true printf "%s\n" "#define WITH_NONEXECSTACK_NOTE 1" >>confdefs.h -else $as_nop - with_nonexecstack_note=false +else case e in #( + e) with_nonexecstack_note=false ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC generates .size and .type asm directives" >&5 @@ -14786,8 +15023,8 @@ printf %s "checking if $CC generates .size and .type asm directives... " >&6; } if test ${ocaml_cv_prog_cc_asm_size_type_directives+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) saved_CC="$CC" saved_CFLAGS="$CFLAGS" saved_CPPFLAGS="$CPPFLAGS" @@ -14853,7 +15090,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$saved_CFLAGS" CC="$saved_CC" LIBS="$saved_LIBS" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_asm_size_type_directives" >&5 printf "%s\n" "$ocaml_cv_prog_cc_asm_size_type_directives" >&6; } @@ -14888,8 +15126,8 @@ if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 -else $as_nop - # Double quotes because $CC needs to be expanded +else case e in #( + e) # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false @@ -14907,9 +15145,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -14923,15 +15162,16 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : @@ -14940,7 +15180,8 @@ fi done ac_cv_prog_CPP=$CPP - + ;; +esac fi CPP=$ac_cv_prog_CPP else @@ -14963,9 +15204,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -14979,24 +15221,26 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi ac_ext=c @@ -15047,19 +15291,21 @@ then : if test ${ocaml_cv_cc_vendor2+y} then : printf %s "(cached) " >&6 -else $as_nop - ocaml_cv_cc_vendor2=`sed -e '/^#/d' conftest.i | tr -s '[:space:]' '-' \ - | sed -e 's/^-//' -e 's/-$//'` +else case e in #( + e) ocaml_cv_cc_vendor2=`sed -e '/^#/d' conftest.i | tr -s '[:space:]' '-' \ + | sed -e 's/^-//' -e 's/-$//'` ;; +esac fi # Domain of values was changed in #12768, so the cache key became different # from the variable ocaml_cc_vendor="$ocaml_cv_cc_vendor2" -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "unexpected preprocessor failure -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cc_vendor" >&5 @@ -15086,8 +15332,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DEP_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DEP_CC"; then +else case e in #( + e) if test -n "$DEP_CC"; then ac_cv_prog_DEP_CC="$DEP_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -15109,7 +15355,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DEP_CC=$ac_cv_prog_DEP_CC if test -n "$DEP_CC"; then @@ -15135,8 +15382,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DEP_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DEP_CC"; then +else case e in #( + e) if test -n "$ac_ct_DEP_CC"; then ac_cv_prog_ac_ct_DEP_CC="$ac_ct_DEP_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -15158,7 +15405,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_DEP_CC=$ac_cv_prog_ac_ct_DEP_CC if test -n "$ac_ct_DEP_CC"; then @@ -15199,8 +15447,9 @@ case $enable_dependency_generation in #( if test "$DEP_CC" = "false" then : as_fn_error $? "The MSVC ports cannot generate dependency information. Install gcc (or another CC-like compiler)" "$LINENO" 5 -else $as_nop - compute_deps=true +else case e in #( + e) compute_deps=true ;; +esac fi ;; #( no) : compute_deps=false ;; #( @@ -15210,11 +15459,13 @@ then : if test "$DEP_CC" = "false" then : compute_deps=false -else $as_nop - compute_deps=true +else case e in #( + e) compute_deps=true ;; +esac fi -else $as_nop - compute_deps=false +else case e in #( + e) compute_deps=false ;; +esac fi ;; esac @@ -15233,8 +15484,9 @@ case $target in #( if test "$target_cpu" = "x86_64" then : machine="-machine:AMD64 " -else $as_nop - machine="" +else case e in #( + e) machine="" ;; +esac fi mklib="link -lib -nologo $machine /out:\$(1) \$(2)" ;; #( @@ -15254,8 +15506,8 @@ then : # autoconf displays a warning if this parameter is missing, but # cross-compilation mode was disabled above. assert=false -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -15271,13 +15523,15 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } target_runnable=true -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - target_runnable=false + target_runnable=false ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi cross_compiling="$old_cross_compiling" @@ -15332,9 +15586,10 @@ printf %s "checking for a workable solution for ln -sf... " >&6; } if MSYS=winsymlinks:nativestrict CYGWIN=winsymlinks:nativestrict ln -sf configure conftestLink 2>/dev/null then : LN_S='ln -sf' -else $as_nop - LN_S='cp -pRf' - +else case e in #( + e) LN_S='cp -pRf' + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ln" >&5 printf "%s\n" "$ln" >&6; } @@ -15389,8 +15644,9 @@ then : ocamltest_unix_impl="real" unix_directory="otherlibs/unix" unix_library="${unix_directory}/unix" -else $as_nop - ocamltest_libunix="None" +else case e in #( + e) ocamltest_libunix="None" ;; +esac fi if test x"$enable_str_lib" != "xno" @@ -15411,8 +15667,8 @@ printf %s "checking whether #! works in shell scripts... " >&6; } if test ${ac_cv_sys_interpreter+y} then : printf %s "(cached) " >&6 -else $as_nop - echo '#! /bin/cat +else case e in #( + e) echo '#! /bin/cat exit 69 ' >conftest chmod u+x conftest @@ -15422,7 +15678,8 @@ if test $? -ne 69; then else ac_cv_sys_interpreter=no fi -rm -f conftest +rm -f conftest ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5 printf "%s\n" "$ac_cv_sys_interpreter" >&6; } @@ -15497,14 +15754,14 @@ esac case $ocaml_cc_vendor in #( msvc-*-clang-*) : - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-Wno-cast-function-type-mismatch" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-Wno-cast-function-type-mismatch" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-cast-function-type-mismatch" >&5 printf %s "checking whether the C compiler accepts -Wno-cast-function-type-mismatch... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -Wno-cast-function-type-mismatch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15521,11 +15778,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -15533,8 +15792,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : cc_warnings="$cc_warnings -Wno-cast-function-type-mismatch" -else $as_nop - : +else case e in #( + e) : ;; +esac fi ;; #( *) : @@ -15543,14 +15803,14 @@ esac # Use -Wimplicit-fallthrough if supported for flag in '-Wimplicit-fallthrough=5' '-Wimplicit-fallthrough'; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_$flag" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_$flag" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts $flag" >&5 printf %s "checking whether the C compiler accepts $flag... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag $flag" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15567,11 +15827,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -15579,8 +15841,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : cc_warnings="$cc_warnings $flag"; break -else $as_nop - : +else case e in #( + e) : ;; +esac fi done @@ -15591,14 +15854,14 @@ for flag in \ '-Wold-style-declaration' \ '-Wwrite-strings' \ ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_$flag" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_$flag" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts $flag" >&5 printf %s "checking whether the C compiler accepts $flag... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag $flag" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15615,11 +15878,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -15627,8 +15892,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : cc_warnings="$cc_warnings $flag" -else $as_nop - : +else case e in #( + e) : ;; +esac fi done @@ -15690,14 +15956,14 @@ case $ocaml_cc_vendor in #( common_cppflags="-D_CRT_SECURE_NO_DEPRECATE" internal_cflags="$cc_warnings" internal_cppflags='-DUNICODE -D_UNICODE -D_CRT_NONSTDC_NO_WARNINGS' - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-volatileMetadata-" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-volatileMetadata-" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -volatileMetadata-" >&5 printf %s "checking whether the C compiler accepts -volatileMetadata-... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -volatileMetadata-" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15714,11 +15980,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -15726,8 +15994,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : internal_cflags="$internal_cflags -volatileMetadata-" -else $as_nop - : +else case e in #( + e) : ;; +esac fi internal_cppflags="$internal_cppflags -DWINDOWS_UNICODE=$windows_unicode" ;; #( @@ -15747,14 +16016,14 @@ esac # Enable the prefetchw instruction on x86 and x86_64. case $target in #( i686*|x86_64*) : - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-mprfchw" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-mprfchw" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -mprfchw" >&5 printf %s "checking whether the C compiler accepts -mprfchw... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -mprfchw" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15771,11 +16040,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -15783,8 +16054,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : internal_cflags="$internal_cflags -mprfchw" -else $as_nop - : +else case e in #( + e) : ;; +esac fi ;; #( *) : @@ -15792,30 +16064,247 @@ fi esac # Enable SSE2 on x86 mingw to avoid using 80-bit registers. -# Enable 64-bit time_t in time.h case $target in #( i686-w64-mingw32*) : - internal_cflags="$internal_cflags -mfpmath=sse -msse2" - # This instructs _mingw.h to adopt the switch in Visual Studio 8 (2005) to - # make time_t a 64-bit value. - internal_cppflags="$internal_cppflags -D__MINGW_USE_VC2005_COMPAT" ;; #( + internal_cflags="$internal_cflags -mfpmath=sse -msse2" ;; #( *) : ;; esac -# Use 64-bit file offset if possible -# See also AC_SYS_LARGEFILE -# Problem: flags are added to CC rather than CPPFLAGS -case $target in #( - *-w64-mingw32*|*-pc-windows) : - ;; #( - *) : - common_cppflags="$common_cppflags -D_FILE_OFFSET_BITS=64" ;; -esac +# Default to enabling large file support and year 2038 support on 32-bit. +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi +if test "$enable_largefile,$enable_year2038" != no,no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CPPFLAGS option for large files" >&5 +printf %s "checking for $CPPFLAGS option for large files... " >&6; } +if test ${ac_cv_sys_largefile_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS=$CPPFLAGS + ac_opt_found=no + for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_opt" = x"none needed" +then : + # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. + CPPFLAGS="$CPPFLAGS -DFTYPE=ino_t" + if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64" + if ac_fn_c_try_compile "$LINENO" +then : + ac_opt='-D_FILE_OFFSET_BITS=64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam +fi + ac_cv_sys_largefile_opts=$ac_opt + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CPPFLAGS=$ac_save_CPPFLAGS + + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 +printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } + +ac_have_largefile=yes +case $ac_cv_sys_largefile_opts in #( + "none needed") : + ;; #( + "supported through gnulib") : + ;; #( + "support not detected") : + ac_have_largefile=no ;; #( + "-D_FILE_OFFSET_BITS=64") : + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ;; #( + "-D_LARGE_FILES=1") : + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; +esac + +if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CPPFLAGS option for timestamps after 2038" >&5 +printf %s "checking for $CPPFLAGS option for timestamps after 2038... " >&6; } +if test ${ac_cv_sys_year2038_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 +printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } + +ac_have_year2038=yes +case $ac_cv_sys_year2038_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_year2038=no ;; #( + "-D_TIME_BITS=64") : + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + ;; #( + "-D__MINGW_USE_VC2005_COMPAT") : + +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + ;; #( + "-U_USE_32_BIT_TIME_T"*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It +will stop working after mid-January 2038. Remove +_USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; +esac + +fi + +fi +if test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no +then : + # If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null +then : + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( + *'Feb 7 2106'* | *'Feb 7 17:10'*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "this system appears to support timestamps after +mid-January 2038, but no mechanism for enabling wide +'time_t' was detected. Did you mean to build a 64-bit +binary? (E.g., 'CC=\"${CC} -m64\"'.) To proceed with +32-bit time_t, configure with '--disable-year2038'. +See 'config.log' for more details" "$LINENO" 5; } ;; #( + *) : + ;; +esac +fi +fi +case $target in #( + *-pc-windows) : + ;; #( + *) : + # LFS and 64-bit time_t are always enabled. + if test "$enable_year2038,$ac_have_year2038" = yes,no +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "could not enable timestamps after mid-January 2038. +This package recommends support for these later +timestamps. However, to proceed with signed 32-bit +time_t even though it will fail then, configure with +'--disable-year2038'. +See 'config.log' for more details" "$LINENO" 5; } +fi + case $ac_cv_sys_largefile_opts in #( + "none needed"|"support not detected") : + ;; #( + *) : + common_cppflags="$common_cppflags $ac_cv_sys_largefile_opts" ;; +esac + case $ac_cv_sys_year2038_opts in #( + "none needed"|"support not detected") : + ;; #( + *) : + common_cppflags="$common_cppflags $ac_cv_sys_year2038_opts" ;; +esac ;; +esac # Require Windows 8 / Server 2012 or later case $target in #( - *-w64-mingw32*|*-pc-windows) : + *-pc-cygwin|*-w64-mingw32*|*-pc-windows) : internal_cppflags="$internal_cppflags -D_WIN32_WINNT=0x602" ;; #( *) : ;; @@ -15838,8 +16327,9 @@ then : *) : ;; esac -else $as_nop - supports_shared_libraries=true +else case e in #( + e) supports_shared_libraries=true ;; +esac fi # Define flexlink chain and flags correctly for the different Windows ports @@ -15884,8 +16374,8 @@ then : flexdll_source_dir='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 printf "%s\n" "disabled" >&6; } -else $as_nop - flexmsg='' +else case e in #( + e) flexmsg='' case $target in #( *-*-cygwin|*-w64-mingw32*|*-pc-windows) : if test x"$with_flexdll" = 'x' || test x"$with_flexdll" = 'xflexdll' @@ -15893,34 +16383,37 @@ then : if test -f 'flexdll/flexdll.h' then : flexdll_source_dir=flexdll -else $as_nop - if test x"$with_flexdll" != 'x' +else case e in #( + e) if test x"$with_flexdll" != 'x' then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: requested but not available" >&5 printf "%s\n" "requested but not available" >&6; } as_fn_error $? "exiting" "$LINENO" 5 +fi ;; +esac fi -fi -else $as_nop - rm -rf flexdll-sources +else case e in #( + e) rm -rf flexdll-sources if test -f "$with_flexdll/flexdll.h" then : mkdir -p flexdll-sources cp -r "$with_flexdll"/* flexdll-sources/ flexdll_source_dir='flexdll-sources' flexmsg=" (from $with_flexdll)" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: requested but not available" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: requested but not available" >&5 printf "%s\n" "requested but not available" >&6; } - as_fn_error $? "exiting" "$LINENO" 5 -fi + as_fn_error $? "exiting" "$LINENO" 5 ;; +esac +fi ;; +esac fi if test x"$flexdll_source_dir" = 'x' then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flexdll_source_dir$flexmsg" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flexdll_source_dir$flexmsg" >&5 printf "%s\n" "$flexdll_source_dir$flexmsg" >&6; } bootstrapping_flexdll=true flexdll_dir=\"+flexdll\" @@ -15935,8 +16428,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$RC"; then +else case e in #( + e) if test -n "$RC"; then ac_cv_prog_RC="$RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -15958,7 +16451,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi RC=$ac_cv_prog_RC if test -n "$RC"; then @@ -15987,8 +16481,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$RC"; then +else case e in #( + e) if test -n "$RC"; then ac_cv_prog_RC="$RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16010,7 +16504,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi RC=$ac_cv_prog_RC if test -n "$RC"; then @@ -16036,8 +16531,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_RC"; then +else case e in #( + e) if test -n "$ac_ct_RC"; then ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16059,7 +16554,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_RC=$ac_cv_prog_ac_ct_RC if test -n "$ac_ct_RC"; then @@ -16080,8 +16576,8 @@ done fi fi -else $as_nop - if test -n "$ac_tool_prefix"; then +else case e in #( + e) if test -n "$ac_tool_prefix"; then for ac_prog in windres do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. @@ -16091,8 +16587,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$RC"; then +else case e in #( + e) if test -n "$RC"; then ac_cv_prog_RC="$RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16114,7 +16610,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi RC=$ac_cv_prog_RC if test -n "$RC"; then @@ -16140,8 +16637,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_RC"; then +else case e in #( + e) if test -n "$ac_ct_RC"; then ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16163,7 +16660,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_RC=$ac_cv_prog_ac_ct_RC if test -n "$ac_ct_RC"; then @@ -16190,8 +16688,10 @@ esac RC=$ac_ct_RC fi fi - -fi + ;; +esac +fi ;; +esac fi ;; #( *) : if test x"$with_flexdll" != 'x' @@ -16200,6 +16700,7 @@ then : printf "%s\n" "requested but not supported" >&6; } as_fn_error $? "exiting" "$LINENO" 5 fi ;; +esac ;; esac fi @@ -16212,8 +16713,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_flexlink+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$flexlink"; then +else case e in #( + e) if test -n "$flexlink"; then ac_cv_prog_flexlink="$flexlink" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16235,7 +16736,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi flexlink=$ac_cv_prog_flexlink if test -n "$flexlink"; then @@ -16307,17 +16809,19 @@ if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - as_fn_error $? "$flexlink does not work" "$LINENO" 5 + as_fn_error $? "$flexlink does not work" "$LINENO" 5 ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unexpected compile error" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unexpected compile error" >&5 printf "%s\n" "unexpected compile error" >&6; } - as_fn_error $? "error calling the C compiler" "$LINENO" 5 + as_fn_error $? "error calling the C compiler" "$LINENO" 5 ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -16378,8 +16882,9 @@ fi if test "x$ac_cv_header_flexdll_h" = xyes then : have_flexdll_h=yes -else $as_nop - have_flexdll_h=no +else case e in #( + e) have_flexdll_h=no ;; +esac fi if test x"$have_flexdll_h" = 'xno' @@ -16441,9 +16946,10 @@ then : have_flexdll_h=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac fi @@ -16505,10 +17011,11 @@ then : mkexe_cmd_exp="flexlink -exe -chain ${flexdll_chain} ${flexlink_flags}" mkexe_cmd="flexlink -exe -chain ${flexdll_chain} ${flexlink_flags}" mkexe_ldflags_prefix='-link ' -else $as_nop - mkexe_extra_flags='' +else case e in #( + e) mkexe_extra_flags='' oc_ldflags='-Wl,--stack,16777216' - + ;; +esac fi ostype="Cygwin" ;; #( *,*-w64-mingw32*) : @@ -16562,30 +17069,33 @@ then : SAK_BUILD='$(MKEXE_VIA_CC) $(OC_CFLAGS) $(CFLAGS) $(OC_CPPFLAGS) $(CPPFLAGS)' ;; esac SAK="\$(ROOTDIR)/runtime/sak${EXEEXT}" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detecting the C toolchain for build" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detecting the C toolchain for build" >&5 printf "%s\n" "$as_me: detecting the C toolchain for build" >&6;} ac_cv_host_exeext=$ac_cv_exeext if test ${ac_cv_build_exeext+y} then : ac_cv_exeext=$ac_cv_build_exeext -else $as_nop - { ac_cv_exeext=; unset ac_cv_exeext;} +else case e in #( + e) { ac_cv_exeext=; unset ac_cv_exeext;} ;; +esac fi ac_cv_host_objext=$ac_cv_objext if test ${ac_cv_build_objext+y} then : ac_cv_objext=$ac_cv_build_objext -else $as_nop - { ac_cv_objext=; unset ac_cv_objext;} +else case e in #( + e) { ac_cv_objext=; unset ac_cv_objext;} ;; +esac fi ac_cv_host_c_compiler_gnu=$ac_cv_c_compiler_gnu if test ${ac_cv_build_c_compiler_gnu+y} then : ac_cv_c_compiler_gnu=$ac_cv_build_c_compiler_gnu -else $as_nop - { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} +else case e in #( + e) { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} ;; +esac fi cross_compiling_build=no @@ -16618,8 +17128,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16641,7 +17151,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then @@ -16663,8 +17174,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$ac_ct_CC_FOR_BUILD"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16686,7 +17197,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD if test -n "$ac_ct_CC_FOR_BUILD"; then @@ -16721,8 +17233,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16744,7 +17256,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then @@ -16766,8 +17279,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else ac_prog_rejected=no @@ -16806,7 +17319,8 @@ if test $ac_prog_rejected = yes; then ac_cv_prog_CC_FOR_BUILD="$as_dir$ac_word${1+' '}$@" fi fi -fi +fi ;; +esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then @@ -16830,8 +17344,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16853,7 +17367,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then @@ -16879,8 +17394,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$ac_ct_CC_FOR_BUILD"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16902,7 +17417,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD if test -n "$ac_ct_CC_FOR_BUILD"; then @@ -16940,8 +17456,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16963,7 +17479,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then @@ -16985,8 +17502,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC_FOR_BUILD"; then +else case e in #( + e) if test -n "$ac_ct_CC_FOR_BUILD"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -17008,7 +17525,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD if test -n "$ac_ct_CC_FOR_BUILD"; then @@ -17037,10 +17555,10 @@ fi fi -test -z "$CC_FOR_BUILD" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC_FOR_BUILD" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -17072,8 +17590,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17090,12 +17608,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -17113,8 +17633,8 @@ printf %s "checking whether $CC_FOR_BUILD accepts -g... " >&6; } if test ${ac_cv_build_prog_cc_g+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_build_prog_cc_g=no CFLAGS_FOR_BUILD="-g" @@ -17132,8 +17652,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_build_prog_cc_g=yes -else $as_nop - CFLAGS_FOR_BUILD="" +else case e in #( + e) CFLAGS_FOR_BUILD="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17148,8 +17668,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS_FOR_BUILD="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17166,12 +17686,15 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_build_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5 printf "%s\n" "$ac_cv_build_prog_cc_g" >&6; } @@ -17198,8 +17721,8 @@ printf %s "checking for $CC_FOR_BUILD option to enable C11 features... " >&6; } if test ${ac_cv_build_prog_cc_c11+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_build_prog_cc_c11=no +else case e in #( + e) ac_cv_build_prog_cc_c11=no ac_save_CC=$CC_FOR_BUILD cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17216,25 +17739,28 @@ rm -f core conftest.err conftest.$ac_build_objext conftest.beam test "x$ac_cv_build_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext -CC_FOR_BUILD=$ac_save_CC +CC_FOR_BUILD=$ac_save_CC ;; +esac fi if test "x$ac_cv_build_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_build_prog_cc_c11" = x +else case e in #( + e) if test "x$ac_cv_build_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c11" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_build_prog_cc_c11" >&6; } - CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c11" + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c11" ;; +esac fi ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c11 - ac_build_prog_cc_stdc=c11 + ac_build_prog_cc_stdc=c11 ;; +esac fi fi if test x$ac_build_prog_cc_stdc = xno @@ -17244,8 +17770,8 @@ printf %s "checking for $CC_FOR_BUILD option to enable C99 features... " >&6; } if test ${ac_cv_build_prog_cc_c99+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_build_prog_cc_c99=no +else case e in #( + e) ac_cv_build_prog_cc_c99=no ac_save_CC=$CC_FOR_BUILD cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17262,25 +17788,28 @@ rm -f core conftest.err conftest.$ac_build_objext conftest.beam test "x$ac_cv_build_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext -CC_FOR_BUILD=$ac_save_CC +CC_FOR_BUILD=$ac_save_CC ;; +esac fi if test "x$ac_cv_build_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_build_prog_cc_c99" = x +else case e in #( + e) if test "x$ac_cv_build_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c99" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_build_prog_cc_c99" >&6; } - CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c99" + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c99" ;; +esac fi ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c99 - ac_build_prog_cc_stdc=c99 + ac_build_prog_cc_stdc=c99 ;; +esac fi fi if test x$ac_build_prog_cc_stdc = xno @@ -17290,8 +17819,8 @@ printf %s "checking for $CC_FOR_BUILD option to enable C89 features... " >&6; } if test ${ac_cv_build_prog_cc_c89+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_build_prog_cc_c89=no +else case e in #( + e) ac_cv_build_prog_cc_c89=no ac_save_CC=$CC_FOR_BUILD cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17308,25 +17837,28 @@ rm -f core conftest.err conftest.$ac_build_objext conftest.beam test "x$ac_cv_build_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext -CC_FOR_BUILD=$ac_save_CC +CC_FOR_BUILD=$ac_save_CC ;; +esac fi if test "x$ac_cv_build_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_build_prog_cc_c89" = x +else case e in #( + e) if test "x$ac_cv_build_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_build_prog_cc_c89" >&6; } - CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89" + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89" ;; +esac fi ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c89 - ac_build_prog_cc_stdc=c89 + ac_build_prog_cc_stdc=c89 ;; +esac fi fi @@ -17381,8 +17913,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -17402,7 +17934,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -17413,8 +17945,9 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi if test -z "$ac_file" then : @@ -17423,13 +17956,14 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } @@ -17453,10 +17987,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -17466,11 +18000,12 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -17486,6 +18021,8 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -17525,18 +18062,19 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling_build" = maybe; then cross_compiling_build=yes else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use \`--build'. -See \`config.log' for more details" "$LINENO" 5; } +If you meant to cross compile, use '--build'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5 printf "%s\n" "$cross_compiling_build" >&6; } -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 @@ -17544,8 +18082,8 @@ printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17577,16 +18115,18 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -17608,8 +18148,8 @@ if test -z "$CPP_FOR_BUILD"; then if test ${ac_cv_build_prog_CPP+y} then : printf %s "(cached) " >&6 -else $as_nop - # Double quotes because $CC needs to be expanded +else case e in #( + e) # Double quotes because $CC needs to be expanded for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false @@ -17627,9 +18167,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -17643,15 +18184,16 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : @@ -17660,7 +18202,8 @@ fi done ac_cv_build_prog_CPP=$CPP_FOR_BUILD - + ;; +esac fi CPP_FOR_BUILD=$ac_cv_build_prog_CPP else @@ -17683,9 +18226,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -17699,24 +18243,26 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi ac_ext=c @@ -17746,7 +18292,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Note that *-pc-windows is not supported for _build_ so we can use '-o' SAK_BUILD="$CC_FOR_BUILD $LDFLAGS_FOR_BUILD -o \$(1) \$(2) $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD" - SAK="\$(ROOTDIR)/runtime/sak${BUILD_EXEEXT}" + SAK="\$(ROOTDIR)/runtime/sak${BUILD_EXEEXT}" ;; +esac fi # sak command to use to encode C literal strings @@ -17780,8 +18327,8 @@ if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS @@ -17835,7 +18382,8 @@ esac IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir - + ;; +esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install @@ -17867,15 +18415,21 @@ printf %s "checking for library containing cos... " >&6; } if test ${ac_cv_search_cos+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char cos (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char cos (void); int main (void) { @@ -17906,11 +18460,13 @@ done if test ${ac_cv_search_cos+y} then : -else $as_nop - ac_cv_search_cos=no +else case e in #( + e) ac_cv_search_cos=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cos" >&5 printf "%s\n" "$ac_cv_search_cos" >&6; } @@ -17991,10 +18547,11 @@ ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes then : -else $as_nop - +else case e in #( + e) printf "%s\n" "#define off_t long int" >>confdefs.h - + ;; +esac fi @@ -18004,28 +18561,30 @@ fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 printf %s "checking size of int... " >&6; } if test ${ac_cv_sizeof_int+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" then : -else $as_nop - if test "$ac_cv_type_int" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_int" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 printf "%s\n" "$ac_cv_sizeof_int" >&6; } @@ -18037,28 +18596,30 @@ printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" then : -else $as_nop - if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 printf "%s\n" "$ac_cv_sizeof_long" >&6; } @@ -18070,28 +18631,30 @@ printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long *" >&5 printf %s "checking size of long *... " >&6; } if test ${ac_cv_sizeof_long_p+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long *))" "ac_cv_sizeof_long_p" "$ac_includes_default" +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long *))" "ac_cv_sizeof_long_p" "$ac_includes_default" then : -else $as_nop - if test "$ac_cv_type_long_p" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long_p" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long *) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_p=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_p" >&5 printf "%s\n" "$ac_cv_sizeof_long_p" >&6; } @@ -18103,28 +18666,30 @@ printf "%s\n" "#define SIZEOF_LONG_P $ac_cv_sizeof_long_p" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 printf %s "checking size of short... " >&6; } if test ${ac_cv_sizeof_short+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" then : -else $as_nop - if test "$ac_cv_type_short" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_short" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 printf "%s\n" "$ac_cv_sizeof_short" >&6; } @@ -18136,28 +18701,30 @@ printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 printf %s "checking size of long long... " >&6; } if test ${ac_cv_sizeof_long_long+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" then : -else $as_nop - if test "$ac_cv_type_long_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } @@ -18176,9 +18743,10 @@ then : bits=64; arch64=true printf "%s\n" "#define ARCH_SIXTYFOUR 1" >>confdefs.h -else $as_nop - as_fn_error $? "Neither 32 nor 64 bits architecture." "$LINENO" 5 - +else case e in #( + e) as_fn_error $? "Neither 32 nor 64 bits architecture." "$LINENO" 5 + ;; +esac fi if test "x$ac_cv_sizeof_int" != "x4" && test "x$ac_cv_sizeof_long" != "x4" \ @@ -18208,8 +18776,8 @@ printf %s "checking whether byte ordering is bigendian... " >&6; } if test ${ac_cv_c_bigendian+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_cv_c_bigendian=unknown +else case e in #( + e) ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18255,8 +18823,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext int main (void) { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ && LITTLE_ENDIAN) bogus endian macros #endif @@ -18287,8 +18855,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else $as_nop - ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -18332,8 +18901,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else $as_nop - ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -18360,22 +18930,23 @@ unsigned short int ascii_mm[] = int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } - extern int foo; - -int -main (void) -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_c_try_link "$LINENO" then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then ac_cv_c_bigendian=yes fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else @@ -18384,9 +18955,10 @@ then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -18409,14 +18981,17 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no -else $as_nop - ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=yes ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 printf "%s\n" "$ac_cv_c_bigendian" >&6; } @@ -18445,22 +19020,24 @@ printf %s "checking alignment of double... " >&6; } if test ${ac_cv_alignof_double+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_double" "$ac_includes_default +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_double" "$ac_includes_default typedef struct { char x; double y; } ac__type_alignof_;" then : -else $as_nop - if test "$ac_cv_type_double" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_double" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute alignment of double -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_alignof_double=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_double" >&5 printf "%s\n" "$ac_cv_alignof_double" >&6; } @@ -18477,22 +19054,24 @@ printf %s "checking alignment of long... " >&6; } if test ${ac_cv_alignof_long+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default typedef struct { char x; long y; } ac__type_alignof_;" then : -else $as_nop - if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute alignment of long -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_alignof_long=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5 printf "%s\n" "$ac_cv_alignof_long" >&6; } @@ -18509,22 +19088,24 @@ printf %s "checking alignment of long long... " >&6; } if test ${ac_cv_alignof_long_long+y} then : printf %s "(cached) " >&6 -else $as_nop - if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long_long" "$ac_includes_default +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long_long" "$ac_includes_default typedef struct { char x; long long y; } ac__type_alignof_;" then : -else $as_nop - if test "$ac_cv_type_long_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot compute alignment of long long -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_alignof_long_long=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long_long" >&5 printf "%s\n" "$ac_cv_alignof_long_long" >&6; } @@ -18556,14 +19137,15 @@ then : align_int64=true printf "%s\n" "#define ARCH_ALIGN_INT64 1" >>confdefs.h -else $as_nop - if test "x$ac_cv_sizeof_long_long" = "x8" && +else case e in #( + e) if test "x$ac_cv_sizeof_long_long" = "x8" && test "$ac_cv_alignof_long_long" -gt 4 then : align_int64=true printf "%s\n" "#define ARCH_ALIGN_INT64 1" >>confdefs.h -fi +fi ;; +esac fi ;; esac @@ -18600,8 +19182,8 @@ printf %s "checking for options needed to enable C11 atomic support... " >&6; } if test ${ocaml_cv_prog_cc_c11_atomic_cflags+y} then : printf %s "(cached) " >&6 -else $as_nop - ocaml_cv_prog_cc_c11_atomic_cflags=no +else case e in #( + e) ocaml_cv_prog_cc_c11_atomic_cflags=no for ocaml_arg in '' '-experimental:c11atomics' '-std:c11' '-std:c11 -experimental:c11atomics' ; do saved_CC="$CC" @@ -18647,8 +19229,9 @@ then : if test x"$ocaml_arg" = x then : ocaml_cv_prog_cc_c11_atomic_cflags='' -else $as_nop - ocaml_cv_prog_cc_c11_atomic_cflags="$ocaml_arg" +else case e in #( + e) ocaml_cv_prog_cc_c11_atomic_cflags="$ocaml_arg" ;; +esac fi # Restore the content of confdefs.h @@ -18674,25 +19257,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ CC="$saved_CC" LIBS="$saved_LIBS" - done + done ;; +esac fi if test "x$ocaml_cv_prog_cc_c11_atomic_cflags" = xno then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C11 atomic support is required, use another C compiler -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - if test "x$ocaml_cv_prog_cc_c11_atomic_cflags" = x +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) if test "x$ocaml_cv_prog_cc_c11_atomic_cflags" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_c11_atomic_cflags" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_c11_atomic_cflags" >&5 printf "%s\n" "$ocaml_cv_prog_cc_c11_atomic_cflags" >&6; } - common_cflags="$common_cflags $ocaml_cv_prog_cc_c11_atomic_cflags" -fi + common_cflags="$common_cflags $ocaml_cv_prog_cc_c11_atomic_cflags" ;; +esac +fi ;; +esac fi @@ -18859,6 +19445,8 @@ then : natdynlink=true ;; #( i[3456]86-*-haiku*) : natdynlink=true ;; #( + x86_64-*-haiku*) : + natdynlink=true ;; #( arm*-*-linux*) : natdynlink=true ;; #( arm*-*-freebsd*) : @@ -18887,14 +19475,14 @@ fi # Try to work around the Skylake/Kaby Lake processor bug. case "$ocaml_cc_vendor,$target" in #( *gcc*,x86_64-*|*gcc*,i686-*) : - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fno-tree-vrp" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fno-tree-vrp" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fno-tree-vrp" >&5 printf %s "checking whether the C compiler accepts -fno-tree-vrp... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -fno-tree-vrp" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -18911,11 +19499,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -18923,8 +19513,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : internal_cflags="$internal_cflags -fno-tree-vrp" -else $as_nop - : +else case e in #( + e) : ;; +esac fi ;; #( *) : @@ -18938,8 +19529,8 @@ printf %s "checking whether the C compiler supports __attribute__((optimize(\"tr if test ${ocaml_cv_prog_cc_optimize_tree_vectorize+y} then : printf %s "(cached) " >&6 -else $as_nop - saved_CFLAGS="$CFLAGS" +else case e in #( + e) saved_CFLAGS="$CFLAGS" CFLAGS="$warn_error_flag $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18955,11 +19546,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ocaml_cv_prog_cc_optimize_tree_vectorize=yes -else $as_nop - ocaml_cv_prog_cc_optimize_tree_vectorize=no +else case e in #( + e) ocaml_cv_prog_cc_optimize_tree_vectorize=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS="$saved_CFLAGS" + CFLAGS="$saved_CFLAGS" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_optimize_tree_vectorize" >&5 printf "%s\n" "$ocaml_cv_prog_cc_optimize_tree_vectorize" >&6; } @@ -18977,8 +19570,8 @@ printf %s "checking whether $CC supports the labels as values extension... " >&6 if test ${ocaml_cv_prog_cc_labels_as_values+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -18998,11 +19591,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ocaml_cv_prog_cc_labels_as_values=yes -else $as_nop - ocaml_cv_prog_cc_labels_as_values=no +else case e in #( + e) ocaml_cv_prog_cc_labels_as_values=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_cc_labels_as_values" >&5 printf "%s\n" "$ocaml_cv_prog_cc_labels_as_values" >&6; } @@ -19096,7 +19691,7 @@ case $target in #( x86_64-*-openbsd*) : has_native_backend=yes; arch=amd64; system=openbsd ;; #( x86_64-*-haiku*) : - arch=amd64; system=beos ;; #( + has_native_backend=yes; arch=amd64; system=beos ;; #( arm64-*-darwin*) : has_native_backend=yes; arch=arm64; system=macosx ;; #( aarch64-*-darwin*) : @@ -19109,8 +19704,9 @@ case $target in #( if $arch64 then : has_native_backend=yes; arch=arm64; system=linux -else $as_nop - arch=arm; model=armv8; system=linux +else case e in #( + e) arch=arm; model=armv8; system=linux ;; +esac fi ;; #( aarch64-*-freebsd*) : has_native_backend=yes; arch=arm64; system=freebsd ;; #( @@ -19157,8 +19753,8 @@ printf %s "checking arm64 store for the assignment memory barrier... " >&6; } if test "$cross_compiling" = yes then : ocaml_arm64_store="stlr (store-release, cross-compiling)" -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -19178,17 +19774,20 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : model=lrcpc2; ocaml_arm64_store="stlur (FEAT_LRCPC2)" -else $as_nop - if test -r /proc/cpuinfo && +else case e in #( + e) if test -r /proc/cpuinfo && grep -Eq 'CPU part.*(0xd03|0xd04|0xd07|0xd08|0xd09)' /proc/cpuinfo then : model=arm64_barrier; ocaml_arm64_store="dmb ishld; str (old core)" -else $as_nop - ocaml_arm64_store="stlr (store-release)" -fi +else case e in #( + e) ocaml_arm64_store="stlr (store-release)" ;; +esac +fi ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_arm64_store" >&5 @@ -19231,8 +19830,9 @@ esac if $native_compiler then : default_build_target=world.opt -else $as_nop - default_build_target=world +else case e in #( + e) default_build_target=world ;; +esac fi if ! $native_compiler @@ -19243,14 +19843,16 @@ fi if $natdynlink then : cmxs="cmxs" -else $as_nop - cmxs="cmx" +else case e in #( + e) cmxs="cmx" ;; +esac fi if $natdynlink then : natdynlink_archive="dynlink.cmxa" -else $as_nop - natdynlink_archive="" +else case e in #( + e) natdynlink_archive="" ;; +esac fi case $enable_native_toplevel,$natdynlink in #( @@ -19275,8 +19877,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DIRECT_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DIRECT_LD"; then +else case e in #( + e) if test -n "$DIRECT_LD"; then ac_cv_prog_DIRECT_LD="$DIRECT_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -19298,7 +19900,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DIRECT_LD=$ac_cv_prog_DIRECT_LD if test -n "$DIRECT_LD"; then @@ -19320,8 +19923,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DIRECT_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DIRECT_LD"; then +else case e in #( + e) if test -n "$ac_ct_DIRECT_LD"; then ac_cv_prog_ac_ct_DIRECT_LD="$ac_ct_DIRECT_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -19344,7 +19947,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_ac_ct_DIRECT_LD" && ac_cv_prog_ac_ct_DIRECT_LD="false" -fi +fi ;; +esac fi ac_ct_DIRECT_LD=$ac_cv_prog_ac_ct_DIRECT_LD if test -n "$ac_ct_DIRECT_LD"; then @@ -19363,8 +19967,8 @@ else DIRECT_LD="$ac_cv_prog_DIRECT_LD" fi -else $as_nop - if test -n "$ac_tool_prefix"; then +else case e in #( + e) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. set dummy ${ac_tool_prefix}ld; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -19372,8 +19976,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DIRECT_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DIRECT_LD"; then +else case e in #( + e) if test -n "$DIRECT_LD"; then ac_cv_prog_DIRECT_LD="$DIRECT_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -19395,7 +19999,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DIRECT_LD=$ac_cv_prog_DIRECT_LD if test -n "$DIRECT_LD"; then @@ -19417,8 +20022,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DIRECT_LD+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DIRECT_LD"; then +else case e in #( + e) if test -n "$ac_ct_DIRECT_LD"; then ac_cv_prog_ac_ct_DIRECT_LD="$ac_ct_DIRECT_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -19440,7 +20045,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_DIRECT_LD=$ac_cv_prog_ac_ct_DIRECT_LD if test -n "$ac_ct_DIRECT_LD"; then @@ -19465,7 +20071,8 @@ esac else DIRECT_LD="$ac_cv_prog_DIRECT_LD" fi - + ;; +esac fi if test -z "$PARTIALLD" then : @@ -19478,8 +20085,9 @@ then : if $arch64 then : PACKLD_FLAGS=' -m elf64ppc' -else $as_nop - PACKLD_FLAGS=' -m elf32ppclinux' +else case e in #( + e) PACKLD_FLAGS=' -m elf32ppclinux' ;; +esac fi ;; #( *) : PACKLD_FLAGS='' ;; @@ -19496,8 +20104,9 @@ esac *) : PACKLD="$DIRECT_LD -r$PACKLD_FLAGS -o " ;; esac -else $as_nop - PACKLD="$PARTIALLD -o " +else case e in #( + e) PACKLD="$PARTIALLD -o " ;; +esac fi # Disable PIE at link time when ocamlopt does not produce position-independent @@ -19533,17 +20142,19 @@ then : toolpref="${target_alias}-" as_target="$target" as_cpu="$target_cpu" -else $as_nop - if test -n "$host_alias" +else case e in #( + e) if test -n "$host_alias" then : toolpref="${host_alias}-" as_target="$host" as_cpu="$host_cpu" -else $as_nop - toolpref="" +else case e in #( + e) toolpref="" as_target="$build" - as_cpu="$build_cpu" -fi + as_cpu="$build_cpu" ;; +esac +fi ;; +esac fi # Finding the assembler @@ -19599,8 +20210,9 @@ then : internal_cflags="$internal_cflags $sharedlib_cflags" default_aspp="$default_aspp $sharedlib_cflags" -else $as_nop - fpic=false +else case e in #( + e) fpic=false ;; +esac fi if test -z "$AS" @@ -19633,8 +20245,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_rlwrap+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$rlwrap"; then +else case e in #( + e) if test -n "$rlwrap"; then ac_cv_prog_rlwrap="$rlwrap" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -19656,7 +20268,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi rlwrap=$ac_cv_prog_rlwrap if test -n "$rlwrap"; then @@ -19687,16 +20300,18 @@ printf "%s\n" "$as_me: checking semantics of signal handlers" >&6;} if test "x$ac_cv_func_sigaction" = xyes then : has_sigaction=true -else $as_nop - has_sigaction=false +else case e in #( + e) has_sigaction=false ;; +esac fi ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask" if test "x$ac_cv_func_sigprocmask" = xyes then : has_sigprocmask=true -else $as_nop - has_sigprocmask=false +else case e in #( + e) has_sigprocmask=false ;; +esac fi if $has_sigaction && $has_sigprocmask @@ -19705,11 +20320,12 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: POSIX signal handling found." >&5 printf "%s\n" "$as_me: POSIX signal handling found." >&6;} -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: assuming signals have the System V semantics." >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: assuming signals have the System V semantics." >&5 printf "%s\n" "$as_me: assuming signals have the System V semantics." >&6;} - + ;; +esac fi @@ -19719,16 +20335,17 @@ has_c99_float_ops=true for ac_func in expm1 log1p hypot fma exp2 log2 cbrt acosh asinh atanh erf erfc trunc round copysign do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - has_c99_float_ops=false +else case e in #( + e) has_c99_float_ops=false ;; +esac fi done @@ -19759,8 +20376,8 @@ printf "%s\n" "cross-compiling; assume yes" >&6; } printf "%s\n" "#define HAS_WORKING_ROUND 1" >>confdefs.h ;; esac -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -19780,8 +20397,8 @@ then : printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAS_WORKING_ROUND 1" >>confdefs.h -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } case $enable_imprecise_c99_float_ops,$target in #( no,*) : @@ -19796,13 +20413,16 @@ esac if test x"$hard_error" = "xtrue" then : as_fn_error $? "round does not work, enable emulation with --enable-imprecise-c99-float-ops" "$LINENO" 5 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: round does not work; emulation enabled" >&5 -printf "%s\n" "$as_me: WARNING: round does not work; emulation enabled" >&2;} -fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: round does not work; emulation enabled" >&5 +printf "%s\n" "$as_me: WARNING: round does not work; emulation enabled" >&2;} ;; +esac +fi ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi cross_compiling="$old_cross_compiling" @@ -19831,8 +20451,8 @@ printf "%s\n" "cross-compiling; assume yes" >&6; } printf "%s\n" "#define HAS_WORKING_FMA 1" >>confdefs.h ;; esac -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -19875,8 +20495,8 @@ then : printf "%s\n" "yes" >&6; } printf "%s\n" "#define HAS_WORKING_FMA 1" >>confdefs.h -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } case $enable_imprecise_c99_float_ops,$target in #( no,*) : @@ -19891,23 +20511,27 @@ esac if test x"$hard_error" = "xtrue" then : as_fn_error $? "fma does not work, enable emulation with --enable-imprecise-c99-float-ops" "$LINENO" 5 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: fma does not work; emulation enabled" >&5 -printf "%s\n" "$as_me: WARNING: fma does not work; emulation enabled" >&2;} -fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: fma does not work; emulation enabled" >&5 +printf "%s\n" "$as_me: WARNING: fma does not work; emulation enabled" >&2;} ;; +esac +fi ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi cross_compiling="$old_cross_compiling" -else $as_nop - if test x"$enable_imprecise_c99_float_ops" != "xyes" +else case e in #( + e) if test x"$enable_imprecise_c99_float_ops" != "xyes" then : as_fn_error $? "C99 float ops unavailable, enable replacements with --enable-imprecise-c99-float-ops" "$LINENO" 5 -fi +fi ;; +esac fi ## getentropy @@ -19956,14 +20580,15 @@ if test "x$ac_cv_func_secure_getenv" = xyes then : printf "%s\n" "#define HAS_SECURE_GETENV 1" >>confdefs.h -else $as_nop - ac_fn_c_check_func "$LINENO" "__secure_getenv" "ac_cv_func___secure_getenv" +else case e in #( + e) ac_fn_c_check_func "$LINENO" "__secure_getenv" "ac_cv_func___secure_getenv" if test "x$ac_cv_func___secure_getenv" = xyes then : printf "%s\n" "#define HAS___SECURE_GETENV 1" >>confdefs.h fi - + ;; +esac fi @@ -20002,8 +20627,9 @@ then : printf "%s\n" "#define HAS_CLOCK_GETTIME_NSEC_NP 1" >>confdefs.h -else $as_nop - has_monotonic_clock=false +else case e in #( + e) has_monotonic_clock=false ;; +esac fi done ;; #( @@ -20033,8 +20659,9 @@ then : printf "%s\n" "#define HAS_POSIX_MONOTONIC_CLOCK 1" >>confdefs.h -else $as_nop - has_monotonic_clock=false +else case e in #( + e) has_monotonic_clock=false ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -20072,15 +20699,21 @@ printf %s "checking for library containing clock_gettime... " >&6; } if test ${ac_cv_search_clock_gettime+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char clock_gettime (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); int main (void) { @@ -20111,11 +20744,13 @@ done if test ${ac_cv_search_clock_gettime+y} then : -else $as_nop - ac_cv_search_clock_gettime=no +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } @@ -20124,8 +20759,9 @@ if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" has_clock_gettime=true -else $as_nop - has_clock_gettime=false +else case e in #( + e) has_clock_gettime=false ;; +esac fi case $enable_instrumented_runtime,$has_clock_gettime,$has_monotonic_clock in #( @@ -20139,9 +20775,10 @@ fi if test "x$ac_cv_search_clock_gettime" = "xnone required" then : instrumented_runtime_libs="" -else $as_nop - instrumented_runtime_libs=$ac_cv_search_clock_gettime - +else case e in #( + e) instrumented_runtime_libs=$ac_cv_search_clock_gettime + ;; +esac fi ;; #( yes,false,*) : @@ -20222,8 +20859,9 @@ esac ;; #( as_fn_error $? "thread sanitizer not supported on arch $arch" "$LINENO" 5 ;; esac -else $as_nop - tsan=false +else case e in #( + e) tsan=false ;; +esac fi if $tsan @@ -20248,9 +20886,10 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : -else $as_nop - as_fn_error $? "libtsan is necessary for TSan but cannot be found. - Try installing it on your system." "$LINENO" 5 +else case e in #( + e) as_fn_error $? "libtsan is necessary for TSan but cannot be found. + Try installing it on your system." "$LINENO" 5 ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext @@ -20270,8 +20909,8 @@ printf %s "checking for ThreadSanitizer builtins... " >&6; } if test ${ocaml_cv_tsan_builtins+y} then : printf %s "(cached) " >&6 -else $as_nop - saved_LDFLAGS="$LDFLAGS" +else case e in #( + e) saved_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -fsanitize=thread $warn_error_flag" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -20297,12 +20936,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ocaml_cv_tsan_builtins=yes -else $as_nop - ocaml_cv_tsan_builtins=no +else case e in #( + e) ocaml_cv_tsan_builtins=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$saved_LDFLAGS" + LDFLAGS="$saved_LDFLAGS" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_tsan_builtins" >&5 printf "%s\n" "$ocaml_cv_tsan_builtins" >&6; } @@ -20317,8 +20958,8 @@ printf %s "checking how many arguments __tsan_func_exit() takes... " >&6; } if test ${ocaml_cv_func_which___tsan_func_exit+y} then : printf %s "(cached) " >&6 -else $as_nop - saved_LDFLAGS="$LDFLAGS" +else case e in #( + e) saved_LDFLAGS="$LDFLAGS" # We need warning flags as using the wrong builtins is often a warning LDFLAGS="$LDFLAGS -fsanitize=thread $warn_error_flag" @@ -20336,8 +20977,8 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ocaml_cv_func_which___tsan_func_exit=void_void -else $as_nop - # Else branch if the first program fails to link +else case e in #( + e) # Else branch if the first program fails to link cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void __tsan_func_exit(void *); @@ -20352,15 +20993,18 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ocaml_cv_func_which___tsan_func_exit=void_void_p -else $as_nop - ocaml_cv_func_which___tsan_func_exit=no +else case e in #( + e) ocaml_cv_func_which___tsan_func_exit=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$saved_LDFLAGS" + LDFLAGS="$saved_LDFLAGS" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_func_which___tsan_func_exit" >&5 printf "%s\n" "$ocaml_cv_func_which___tsan_func_exit" >&6; } @@ -20393,14 +21037,14 @@ esac *) : ;; esac - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fsanitize=thread $tsan_distinguish_volatile_cflags" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fsanitize=thread $tsan_distinguish_volatile_cflags" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=thread $tsan_distinguish_volatile_cflags" >&5 printf %s "checking whether the C compiler accepts -fsanitize=thread $tsan_distinguish_volatile_cflags... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -fsanitize=thread $tsan_distinguish_volatile_cflags" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20417,11 +21061,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -20429,8 +21075,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : : -else $as_nop - as_fn_error $? "The C compiler does not support the \`$tsan_distinguish_volatile_cflags' flag. Try upgrading to GCC >= 11, or to Clang >= 11." "$LINENO" 5 +else case e in #( + e) as_fn_error $? "The C compiler does not support the \`$tsan_distinguish_volatile_cflags' flag. Try upgrading to GCC >= 11, or to Clang >= 11." "$LINENO" 5 ;; +esac fi tsan_cflags="$tsan_cflags $tsan_distinguish_volatile_cflags" @@ -20439,11 +21086,12 @@ fi native_cflags="$native_cflags $tsan_cflags" native_ldflags="$native_ldflags $tsan_ldflags" tsan_native_runtime_c_sources="tsan" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not using thread sanitizer" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not using thread sanitizer" >&5 printf "%s\n" "$as_me: not using thread sanitizer" >&6;} tsan_native_runtime_c_sources="" - + ;; +esac fi # libunwind detection when TSan is enabled @@ -20465,8 +21113,9 @@ fi if test x"$LIBUNWIND_CPPFLAGS" != x then : libunwind_cppflags="$LIBUNWIND_CPPFLAGS" -else $as_nop - libunwind_cppflags="" +else case e in #( + e) libunwind_cppflags="" ;; +esac fi case "$system" in #( @@ -20508,8 +21157,9 @@ then : printf "%s\n" "#define HAS_LIBUNWIND 1" >>confdefs.h libunwind_available=true -else $as_nop - libunwind_available=false +else case e in #( + e) libunwind_available=false ;; +esac fi LDFLAGS="$SAVED_LDFLAGS" @@ -20549,15 +21199,21 @@ printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char socket (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); int main (void) { @@ -20588,11 +21244,13 @@ done if test ${ac_cv_search_socket+y} then : -else $as_nop - ac_cv_search_socket=no +else case e in #( + e) ac_cv_search_socket=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } @@ -20628,15 +21286,21 @@ printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char socket (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); int main (void) { @@ -20667,11 +21331,13 @@ done if test ${ac_cv_search_socket+y} then : -else $as_nop - ac_cv_search_socket=no +else case e in #( + e) ac_cv_search_socket=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } @@ -20689,15 +21355,21 @@ printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char socket (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); int main (void) { @@ -20728,11 +21400,13 @@ done if test ${ac_cv_search_socket+y} then : -else $as_nop - ac_cv_search_socket=no +else case e in #( + e) ac_cv_search_socket=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } @@ -20748,15 +21422,21 @@ printf %s "checking for library containing inet_ntop... " >&6; } if test ${ac_cv_search_inet_ntop+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS +else case e in #( + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char inet_ntop (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char inet_ntop (void); int main (void) { @@ -20787,11 +21467,13 @@ done if test ${ac_cv_search_inet_ntop+y} then : -else $as_nop - ac_cv_search_inet_ntop=no +else case e in #( + e) ac_cv_search_inet_ntop=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_ntop" >&5 printf "%s\n" "$ac_cv_search_inet_ntop" >&6; } @@ -20807,16 +21489,17 @@ fi for ac_func in socket socketpair bind listen accept connect do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - sockets=false +else case e in #( + e) sockets=false ;; +esac fi done @@ -20869,8 +21552,9 @@ case $target in #( if test "x$ac_cv_type_struct_sockaddr_in6" = xyes then : -else $as_nop - ipv6=false +else case e in #( + e) ipv6=false ;; +esac fi ;; #( *) : @@ -20884,8 +21568,9 @@ fi if test "x$ac_cv_type_struct_sockaddr_in6" = xyes then : -else $as_nop - ipv6=false +else case e in #( + e) ipv6=false ;; +esac fi ;; @@ -20896,16 +21581,17 @@ then : for ac_func in getaddrinfo getnameinfo inet_pton inet_ntop do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - ipv6=false +else case e in #( + e) ipv6=false ;; +esac fi done @@ -21076,8 +21762,9 @@ then : printf "%s\n" "#define HAS_WAITPID 1" >>confdefs.h -else $as_nop - wait=false +else case e in #( + e) wait=false ;; +esac fi @@ -21183,8 +21870,9 @@ then : printf "%s\n" "#define HAS_SETITIMER 1" >>confdefs.h -else $as_nop - setitimer=false +else case e in #( + e) setitimer=false ;; +esac fi @@ -21222,8 +21910,9 @@ then : printf "%s\n" "#define HAS_GETTIMEOFDAY 1" >>confdefs.h -else $as_nop - gettimeofday=false +else case e in #( + e) gettimeofday=false ;; +esac fi @@ -21301,8 +21990,8 @@ fi fi -else $as_nop - ac_fn_c_check_func "$LINENO" "_wsetlocale" "ac_cv_func__wsetlocale" +else case e in #( + e) ac_fn_c_check_func "$LINENO" "_wsetlocale" "ac_cv_func__wsetlocale" if test "x$ac_cv_func__wsetlocale" = xyes then : printf "%s\n" "#define HAS_LOCALE_H 1" >>confdefs.h @@ -21315,7 +22004,8 @@ then : fi fi - + ;; +esac fi fi @@ -21354,8 +22044,8 @@ then : printf "%s\n" "#define STRTOD_L strtod_l" >>confdefs.h -else $as_nop - ac_fn_c_check_func "$LINENO" "_create_locale" "ac_cv_func__create_locale" +else case e in #( + e) ac_fn_c_check_func "$LINENO" "_create_locale" "ac_cv_func__create_locale" if test "x$ac_cv_func__create_locale" = xyes then : ac_fn_c_check_func "$LINENO" "_strtod_l" "ac_cv_func__strtod_l" @@ -21368,7 +22058,8 @@ then : fi fi - + ;; +esac fi @@ -21378,8 +22069,8 @@ if test "x$ac_cv_func_vsnprintf_l" = xyes then : printf "%s\n" "#define HAS_VSNPRINTF_L 1" >>confdefs.h -else $as_nop - ac_fn_c_check_func "$LINENO" "_create_locale" "ac_cv_func__create_locale" +else case e in #( + e) ac_fn_c_check_func "$LINENO" "_create_locale" "ac_cv_func__create_locale" if test "x$ac_cv_func__create_locale" = xyes then : ac_fn_c_check_func "$LINENO" "_vsnprintf_l" "ac_cv_func__vsnprintf_l" @@ -21390,7 +22081,8 @@ then : fi fi - + ;; +esac fi @@ -21405,22 +22097,28 @@ then : if test "x$ac_cv_func_dlopen" = xyes then : supports_shared_libraries=true DLLIBS="" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char dlopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); int main (void) { @@ -21432,27 +22130,32 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes -else $as_nop - ac_cv_lib_dl_dlopen=no +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : supports_shared_libraries=true DLLIBS="-ldl $DLLIBS" -else $as_nop - supports_shared_libraries=false +else case e in #( + e) supports_shared_libraries=false ;; +esac fi - + ;; +esac fi ;; esac -else $as_nop - supports_shared_libraries=false +else case e in #( + e) supports_shared_libraries=false ;; +esac fi if $supports_shared_libraries @@ -21461,9 +22164,10 @@ then : printf "%s\n" "$as_me: Dynamic loading of shared libraries is supported." >&6;} printf "%s\n" "#define SUPPORT_DYNAMIC_LINKING 1" >>confdefs.h -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic loading of shared libraries is not supported." >&5 -printf "%s\n" "$as_me: Dynamic loading of shared libraries is not supported." >&6;} +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Dynamic loading of shared libraries is not supported." >&5 +printf "%s\n" "$as_me: Dynamic loading of shared libraries is not supported." >&6;} ;; +esac fi ## mmap @@ -21505,14 +22209,14 @@ case $ocaml_cc_vendor,$target in #( sunc*,sparc-sun-*) : cc_has_debug_prefix_map=false ;; #( *) : - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fdebug-prefix-map=old=new" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-fdebug-prefix-map=old=new" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fdebug-prefix-map=old=new" >&5 printf %s "checking whether the C compiler accepts -fdebug-prefix-map=old=new... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -fdebug-prefix-map=old=new" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -21529,11 +22233,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -21541,8 +22247,9 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : cc_has_debug_prefix_map=true -else $as_nop - cc_has_debug_prefix_map=false +else case e in #( + e) cc_has_debug_prefix_map=false ;; +esac fi ;; esac @@ -21556,14 +22263,14 @@ then : then : srcdir_abs_real='' fi - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-Wa,--debug-prefix-map=old=new" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-Wa,--debug-prefix-map=old=new" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wa,--debug-prefix-map=old=new" >&5 printf %s "checking whether the C compiler accepts -Wa,--debug-prefix-map=old=new... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -Wa,--debug-prefix-map=old=new" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -21580,11 +22287,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -21592,18 +22301,19 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : build_map_flags='-Wa,--debug-prefix-map=' -else $as_nop - : +else case e in #( + e) : ;; +esac fi - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-ffile-prefix-map=old=new" | $as_tr_sh` + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$warn_error_flag_-ffile-prefix-map=old=new" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -ffile-prefix-map=old=new" >&5 printf %s "checking whether the C compiler accepts -ffile-prefix-map=old=new... " >&6; } if eval test \${$as_CACHEVAR+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $warn_error_flag -ffile-prefix-map=old=new" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -21620,11 +22330,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_CACHEVAR=yes" -else $as_nop - eval "$as_CACHEVAR=no" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags + CFLAGS=$ax_check_save_flags ;; +esac fi eval ac_res=\$$as_CACHEVAR { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -21632,11 +22344,12 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes" then : build_map_flags="$build_map_flags -ffile-prefix-map=" -else $as_nop - if $cc_has_debug_prefix_map +else case e in #( + e) if $cc_has_debug_prefix_map then : build_map_flags="$build_map_flags -fdebug-prefix-map=" -fi +fi ;; +esac fi fi @@ -21682,9 +22395,10 @@ if $stat_has_ns_precision then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: stat supports nanosecond precision" >&5 printf "%s\n" "$as_me: stat supports nanosecond precision" >&6;} -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: stat does not support nanosecond precision" >&5 -printf "%s\n" "$as_me: stat does not support nanosecond precision" >&6;} +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: stat does not support nanosecond precision" >&5 +printf "%s\n" "$as_me: stat does not support nanosecond precision" >&6;} ;; +esac fi # Number of arguments of gethostbyname_r @@ -21703,8 +22417,8 @@ printf %s "checking how many arguments gethostbyname_r() takes... " >&6; } if test ${ac_cv_func_which_gethostbyname_r+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ################################################################ @@ -21838,7 +22552,8 @@ fi ################################################################ - + ;; +esac fi case "$ac_cv_func_which_gethostbyname_r" in @@ -21928,8 +22643,8 @@ printf %s "checking how many arguments gethostbyaddr_r() takes... " >&6; } if test ${ac_cv_func_which_gethostbyaddr_r+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ################################################################ @@ -22034,7 +22749,8 @@ fi ################################################################ - + ;; +esac fi case "$ac_cv_func_which_gethostbyaddr_r" in @@ -22214,8 +22930,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 -else $as_nop - case $PKG_CONFIG in +else case e in #( + e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; @@ -22240,6 +22956,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG @@ -22262,8 +22979,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKG_CONFIG in +else case e in #( + e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; @@ -22289,6 +23006,7 @@ IFS=$as_save_IFS test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="false" ;; +esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG @@ -22308,8 +23026,8 @@ else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi -else $as_nop - if test -n "$ac_tool_prefix"; then +else case e in #( + e) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -22317,8 +23035,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 -else $as_nop - case $PKG_CONFIG in +else case e in #( + e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; @@ -22343,6 +23061,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG @@ -22365,8 +23084,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKG_CONFIG in +else case e in #( + e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; @@ -22391,6 +23110,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG @@ -22416,7 +23136,8 @@ esac else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi - + ;; +esac fi ## ZSTD compression library @@ -22429,8 +23150,8 @@ printf %s "checking for $CC options needed to detect all undeclared functions... if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_save_CFLAGS=$CFLAGS +else case e in #( + e) ac_save_CFLAGS=$CFLAGS ac_cv_c_undeclared_builtin_options='cannot detect' for ac_arg in '' -fno-builtin; do CFLAGS="$ac_save_CFLAGS $ac_arg" @@ -22449,8 +23170,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - # This test program should compile successfully. +else case e in #( + e) # This test program should compile successfully. # No library function is consistently available on # freestanding implementations, so test against a dummy # declaration. Include always-available headers on the @@ -22478,26 +23199,29 @@ then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' -else $as_nop - ac_cv_c_undeclared_builtin_options=$ac_arg +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac fi break fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins -See \`config.log' for more details" "$LINENO" 5; } ;; #( +See 'config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : @@ -22515,27 +23239,34 @@ then : zstd_libs=`${PKG_CONFIG} --libs libzstd` zstd_flags=`${PKG_CONFIG} --cflags libzstd` zstd_status="ok" -else $as_nop - zstd_status="zstd library too old: version 1.4 or later is needed" +else case e in #( + e) zstd_status="zstd library too old: version 1.4 or later is needed" ;; +esac fi -else $as_nop - # Otherwise, try to find zstd the old way, +else case e in #( + e) # Otherwise, try to find zstd the old way, # assuming it is installed in default places { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZSTD_createCCtx in -lzstd" >&5 printf %s "checking for ZSTD_createCCtx in -lzstd... " >&6; } if test ${ac_cv_lib_zstd_ZSTD_createCCtx+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lzstd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char ZSTD_createCCtx (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ZSTD_createCCtx (void); int main (void) { @@ -22547,12 +23278,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_zstd_ZSTD_createCCtx=yes -else $as_nop - ac_cv_lib_zstd_ZSTD_createCCtx=no +else case e in #( + e) ac_cv_lib_zstd_ZSTD_createCCtx=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_createCCtx" >&5 printf "%s\n" "$ac_cv_lib_zstd_ZSTD_createCCtx" >&6; } @@ -22565,13 +23298,16 @@ then : zstd_libs="-lzstd" zstd_flags="" zstd_status="ok" -else $as_nop - zstd_status="zstd library too old: version 1.4 or later is needed" +else case e in #( + e) zstd_status="zstd library too old: version 1.4 or later is needed" ;; +esac fi -else $as_nop - zstd_status="zstd library not found" +else case e in #( + e) zstd_status="zstd library not found" ;; +esac fi - + ;; +esac fi fi @@ -22626,24 +23362,27 @@ then : then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } zstd_libs='' zstd_flags='' zstd_status=\ -"programs linked with zstd do not appear to be executable." +"programs linked with zstd do not appear to be executable." ;; +esac fi -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skipped" >&5 -printf "%s\n" "skipped" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skipped" >&5 +printf "%s\n" "skipped" >&6; } ;; +esac fi -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } zstd_libs='' zstd_flags='' - zstd_status="zstd found, but programs cannot be linked with it." + zstd_status="zstd found, but programs cannot be linked with it." ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext @@ -22666,8 +23405,8 @@ printf "%s\n" "$as_me: compressed compilation artefacts supported" >&6;} internal_cppflags="$internal_cppflags $zstd_flags" printf "%s\n" "#define HAS_ZSTD 1" >>confdefs.h -else $as_nop - case "$with_zstd" in #( +else case e in #( + e) case "$with_zstd" in #( no) : ;; #( yes) : @@ -22677,6 +23416,7 @@ else $as_nop printf "%s\n" "$as_me: WARNING: $zstd_status" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compressed compilation artefacts not supported" >&5 printf "%s\n" "$as_me: WARNING: compressed compilation artefacts not supported" >&2;} ;; +esac ;; esac fi @@ -22696,11 +23436,12 @@ then : optional_bytecode_tools="$optional_bytecode_tools debugger/ocamldebug" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ocamldebug supported" >&5 printf "%s\n" "$as_me: ocamldebug supported" >&6;} -else $as_nop - with_debugger="" +else case e in #( + e) with_debugger="" build_ocamldebug=false { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ocamldebug not supported" >&5 -printf "%s\n" "$as_me: ocamldebug not supported" >&6;} +printf "%s\n" "$as_me: ocamldebug not supported" >&6;} ;; +esac fi ;; esac @@ -22723,6 +23464,140 @@ esac ## Determine how to link with the POSIX threads library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + case $target in #( *-w64-mingw32*) : link_gcc_eh='' @@ -22731,16 +23606,22 @@ printf %s "checking for printf in -lgcc_eh... " >&6; } if test ${ac_cv_lib_gcc_eh_printf+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lgcc_eh $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char printf (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char printf (void); int main (void) { @@ -22752,12 +23633,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_gcc_eh_printf=yes -else $as_nop - ac_cv_lib_gcc_eh_printf=no +else case e in #( + e) ac_cv_lib_gcc_eh_printf=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcc_eh_printf" >&5 printf "%s\n" "$ac_cv_lib_gcc_eh_printf" >&6; } @@ -22810,8 +23693,14 @@ printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char pthread_join (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (void); int main (void) { @@ -22905,7 +23794,7 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 + $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} @@ -22935,8 +23824,8 @@ printf %s "checking whether $CC is Clang... " >&6; } if test ${ax_cv_PTHREAD_CLANG+y} then : printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_CLANG=no +else case e in #( + e) ax_cv_PTHREAD_CLANG=no # Note that Autoconf sets GCC=yes for Clang as well as GCC if test "x$GCC" = "xyes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -22948,14 +23837,15 @@ else $as_nop _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 + $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 then : ax_cv_PTHREAD_CLANG=yes fi rm -rf conftest* fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } @@ -23005,8 +23895,9 @@ esac if test "x$ax_pthread_check_macro" = "x--" then : ax_pthread_check_cond=0 -else $as_nop - ax_pthread_check_cond="!defined($ax_pthread_check_macro)" +else case e in #( + e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;; +esac fi @@ -23040,8 +23931,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ax_pthread_config+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$ax_pthread_config"; then +else case e in #( + e) if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -23064,7 +23955,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" -fi +fi ;; +esac fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then @@ -23197,8 +24089,8 @@ printf %s "checking whether Clang needs flag to prevent \"argument unused\" warn if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} then : printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown +else case e in #( + e) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown # Create an alternate version of $ac_link that compiles and # links in two steps (.c -> .o, .o -> exe) instead of one # (.c -> exe), because the warning occurs only in the second @@ -23244,7 +24136,8 @@ then : ax_pthread_try=no fi ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } @@ -23271,8 +24164,8 @@ printf %s "checking for joinable pthread attribute... " >&6; } if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} then : printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_JOINABLE_ATTR=unknown +else case e in #( + e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -23292,7 +24185,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } @@ -23312,14 +24206,15 @@ printf %s "checking whether more special flags are required for pthreads... " >& if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} then : printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_SPECIAL_FLAGS=no +else case e in #( + e) ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ;; esac - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } @@ -23335,8 +24230,8 @@ printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -23351,12 +24246,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else $as_nop - ax_cv_PTHREAD_PRIO_INHERIT=no +else case e in #( + e) ax_cv_PTHREAD_PRIO_INHERIT=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } @@ -23406,8 +24303,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$PTHREAD_CC"; then +else case e in #( + e) if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -23429,7 +24326,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then @@ -23456,8 +24354,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CXX+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$PTHREAD_CXX"; then +else case e in #( + e) if test -n "$PTHREAD_CXX"; then ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -23479,7 +24377,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX if test -n "$PTHREAD_CXX"; then @@ -23566,8 +24465,8 @@ then : printf "%s\n" "GNU" >&6; } printf "%s\n" "#define HAS_GNU_GETAFFINITY_NP 1" >>confdefs.h -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -23590,12 +24489,14 @@ then : printf "%s\n" "BSD" >&6; } printf "%s\n" "#define HAS_BSD_GETAFFINITY_NP 1" >>confdefs.h -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: pthread_getaffinity_np not found" >&5 -printf "%s\n" "pthread_getaffinity_np not found" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: pthread_getaffinity_np not found" >&5 +printf "%s\n" "pthread_getaffinity_np not found" >&6; } ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext @@ -23612,12 +24513,12 @@ fi for ac_func in pthread_setname_np pthread_set_name_np do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF break fi @@ -23644,8 +24545,8 @@ printf %s "checking for SetThreadDescription... " >&6; } if test ${ac_cv_func_SetThreadDescription+y} then : printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -23659,11 +24560,13 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_func_SetThreadDescription=yes -else $as_nop - ac_cv_func_SetThreadDescription=no +else case e in #( + e) ac_cv_func_SetThreadDescription=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_SetThreadDescription" >&5 printf "%s\n" "$ac_cv_func_SetThreadDescription" >&6; } @@ -23717,8 +24620,8 @@ printf %s "checking whether the assembler supports --debug-prefix-map... " >&6; if test ${ocaml_cv_prog_as_debug_prefix_map+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) saved_CC="$CC" saved_CFLAGS="$CFLAGS" saved_CPPFLAGS="$CPPFLAGS" @@ -23749,8 +24652,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ocaml_cv_prog_as_debug_prefix_map=true -else $as_nop - ocaml_cv_prog_as_debug_prefix_map=false +else case e in #( + e) ocaml_cv_prog_as_debug_prefix_map=false ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -23763,7 +24667,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$saved_CFLAGS" CC="$saved_CC" LIBS="$saved_LIBS" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_as_debug_prefix_map" >&5 printf "%s\n" "$ocaml_cv_prog_as_debug_prefix_map" >&6; } @@ -23776,8 +24681,8 @@ then : if test ${ocaml_cv_prog_as_cfi_directives+y} then : printf %s "(cached) " >&6 -else $as_nop - ocaml_cv_prog_as_cfi_directives=no +else case e in #( + e) ocaml_cv_prog_as_cfi_directives=no saved_CC="$CC" saved_CFLAGS="$CFLAGS" @@ -23811,16 +24716,17 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : prog_aspp_ok=true -else $as_nop - prog_aspp_ok=false +else case e in #( + e) prog_aspp_ok=false ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$AS" = "$ASPP" then : prog_as_ok="$prog_aspp_ok" -else $as_nop - CC="$AS" +else case e in #( + e) CC="$AS" ac_compile='$CC $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -23836,10 +24742,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : prog_as_ok=true -else $as_nop - prog_as_ok=false +else case e in #( + e) prog_as_ok=false ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi @@ -23856,7 +24764,8 @@ fi if $prog_aspp_ok && $prog_as_ok then : ocaml_cv_prog_as_cfi_directives=yes -fi +fi ;; +esac fi if test "x$ocaml_cv_prog_as_cfi_directives" = xyes @@ -23866,16 +24775,18 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: requested but not available +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: requested but not available as_fn_error $? "exiting" "$LINENO" 5" >&5 printf "%s\n" "requested but not available - as_fn_error $? "exiting" "$LINENO" 5" >&6; } + as_fn_error $? "exiting" "$LINENO" 5" >&6; } ;; +esac fi -else $as_nop - asm_cfi_supported=false +else case e in #( + e) asm_cfi_supported=false { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 -printf "%s\n" "disabled" >&6; } +printf "%s\n" "disabled" >&6; } ;; +esac fi ;; esac @@ -23890,7 +24801,8 @@ if test x"$enable_frame_pointers" = "xyes" then : case $target in #( x86_64-*-linux*|x86_64-*-darwin*|x86_64-*-freebsd*|x86_64-*-dragonfly*| \ - aarch64-*-linux*|aarch64-*-darwin*|aarch64-*-freebsd*|riscv64-*-linux*) : + aarch64-*-linux*|aarch64-*-darwin*|aarch64-*-freebsd*|riscv64-*-linux*| \ + powerpc64-*-linux*|powerpc64le-*-linux*) : case $ocaml_cc_vendor in #( clang-*|gcc-*) : common_cflags="$common_cflags -g -fno-omit-frame-pointer" @@ -23907,10 +24819,11 @@ esac ;; #( as_fn_error $? "frame pointers not supported on this platform" "$LINENO" 5 ;; esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not using frame pointers" >&5 +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not using frame pointers" >&5 printf "%s\n" "$as_me: not using frame pointers" >&6;} - frame_pointers=false + frame_pointers=false ;; +esac fi ## Check for mmap support for huge pages and contiguous heap @@ -23920,12 +24833,12 @@ printf %s "checking whether mmap supports huge pages... " >&6; } if test ${ocaml_cv_func_mmap_huge_pages+y} then : printf %s "(cached) " >&6 -else $as_nop - if test "$cross_compiling" = yes +else case e in #( + e) if test "$cross_compiling" = yes then : ocaml_cv_func_mmap_huge_pages=no -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -23973,13 +24886,16 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ocaml_cv_func_mmap_huge_pages=yes -else $as_nop - ocaml_cv_func_mmap_huge_pages=no +else case e in #( + e) ocaml_cv_func_mmap_huge_pages=no ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - + ;; +esac fi if test x"$ocaml_cv_func_mmap_huge_pages" = "xyes" @@ -23990,15 +24906,17 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - if test $cross_compiling = yes +else case e in #( + e) if test $cross_compiling = yes then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no assumed" >&5 printf "%s\n" "no assumed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi ;; +esac fi @@ -24008,22 +24926,25 @@ printf "%s\n" "#define HEADER_RESERVED_BITS $reserved_header_bits" >>confdefs.h if test x"$enable_installing_bytecode_programs" = "xno" then : install_bytecode_programs=false -else $as_nop - install_bytecode_programs=true +else case e in #( + e) install_bytecode_programs=true ;; +esac fi if test x"$enable_installing_source_artifacts" = "xno" then : install_source_artifacts=false -else $as_nop - install_source_artifacts=true +else case e in #( + e) install_source_artifacts=true ;; +esac fi if test x"$enable_stdlib_manpages" != "xno" then : build_libraries_manpages=true -else $as_nop - build_libraries_manpages=false +else case e in #( + e) build_libraries_manpages=false ;; +esac fi documentation_tool_cmd='' @@ -24040,8 +24961,9 @@ then : documentation_tool_cmd="$withval" documentation_tool='odoc' ;; esac -else $as_nop - documentation_tool='ocamldoc' +else case e in #( + e) documentation_tool='ocamldoc' ;; +esac fi if test "x$documentation_tool_cmd" = 'x' @@ -24053,8 +24975,9 @@ fi if test x"$enable_ocamlobjinfo" != 'xno' then : build_ocamlobjinfo=true -else $as_nop - build_ocamlobjinfo=false +else case e in #( + e) build_ocamlobjinfo=false ;; +esac fi case $enable_ocamltest,true in #( @@ -24067,9 +24990,10 @@ case $enable_ocamltest,true in #( then : optional_native_tools="$optional_native_tools \ testsuite/tools/test_in_prefix.opt" -else $as_nop - optional_bytecode_tools="$optional_bytecode_tools \ -testsuite/tools/test_in_prefix" +else case e in #( + e) optional_bytecode_tools="$optional_bytecode_tools \ +testsuite/tools/test_in_prefix" ;; +esac fi testsuite_tools='testsuite/tools/codegen testsuite/tools/expect' optional_bytecode_tools="$optional_bytecode_tools $testsuite_tools" @@ -24079,8 +25003,8 @@ printf %s "checking for a C++11 compiler... " >&6; } if test ${ocaml_cv_prog_cxx+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) case "$ccomp_type" in #( cc) : @@ -24089,8 +25013,9 @@ else $as_nop if test x"$CXX" = x then : CC="$CC -xc++"; CFLAGS="$CXXFLAGS" -else $as_nop - CC="$CXX"; CFLAGS="$CXXFLAGS" +else case e in #( + e) CC="$CXX"; CFLAGS="$CXXFLAGS" ;; +esac fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -24116,8 +25041,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ocaml_cv_prog_cxx="$CC" -else $as_nop - ocaml_cv_prog_cxx="" +else case e in #( + e) ocaml_cv_prog_cxx="" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC="$saved_CC" @@ -24128,6 +25054,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ocaml_cv_prog_cxx="$CC" ;; #( *) : ocaml_cv_prog_cxx="" ;; +esac ;; esac fi @@ -24161,8 +25088,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DIFF+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -n "$DIFF"; then +else case e in #( + e) if test -n "$DIFF"; then ac_cv_prog_DIFF="$DIFF" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -24184,7 +25111,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi DIFF=$ac_cv_prog_DIFF if test -n "$DIFF"; then @@ -24198,8 +25126,12 @@ fi test -n "$DIFF" && break done -test -n "$DIFF" || DIFF="as_fn_error $? "ocamltest requires a diff tool" "$LINENO" 5" +test -n "$DIFF" || DIFF="false" + if test x"$DIFF" = "xfalse" +then : + as_fn_error $? "ocamltest requires a diff tool" "$LINENO" 5 +fi case $DIFF in #( diff) : flags_to_test='--strip-trailing-cr -u' ;; #( @@ -24211,13 +25143,14 @@ printf %s "checking for extra $DIFF flags... " >&6; } if test ${ocaml_cv_prog_diff_flags+y} then : printf %s "(cached) " >&6 -else $as_nop - flags="" +else case e in #( + e) flags="" for flag in ${flags_to_test}; do "$DIFF" $flag /dev/null /dev/null >/dev/null 2>&1 && \ flags="${flags:+$flags }$flag" done - ocaml_cv_prog_diff_flags="$flags" + ocaml_cv_prog_diff_flags="$flags" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_diff_flags" >&5 printf "%s\n" "$ocaml_cv_prog_diff_flags" >&6; } @@ -24226,11 +25159,12 @@ printf %s "checking whether $DIFF supports --color={auto,always,never}... " >&6; if test ${ocaml_cv_prog_diff_supports_color+y} then : printf %s "(cached) " >&6 -else $as_nop - if $DIFF --color=auto /dev/null /dev/null > /dev/null 2>&1 +else case e in #( + e) if $DIFF --color=auto /dev/null /dev/null > /dev/null 2>&1 then : ocaml_cv_prog_diff_supports_color=true -fi +fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_prog_diff_supports_color" >&5 printf "%s\n" "$ocaml_cv_prog_diff_supports_color" >&6; } @@ -24246,37 +25180,42 @@ then : if test x"$enable_flambda_invariants" = "xyes" then : flambda_invariants=true -else $as_nop - flambda_invariants=false +else case e in #( + e) flambda_invariants=false ;; +esac fi -else $as_nop - flambda=false - flambda_invariants=false +else case e in #( + e) flambda=false + flambda_invariants=false ;; +esac fi if $flambda then : CMX_MAGIC_NUMBER=Caml1999y038 CMXA_MAGIC_NUMBER=Caml1999z038 -else $as_nop - CMX_MAGIC_NUMBER=Caml1999Y038 - CMXA_MAGIC_NUMBER=Caml1999Z038 +else case e in #( + e) CMX_MAGIC_NUMBER=Caml1999Y038 + CMXA_MAGIC_NUMBER=Caml1999Z038 ;; +esac fi if test x"$enable_cmm_invariants" = "xyes" then : cmm_invariants=true -else $as_nop - cmm_invariants=false +else case e in #( + e) cmm_invariants=false ;; +esac fi if test x"$enable_flat_float_array" = "xno" then : flat_float_array=false -else $as_nop - printf "%s\n" "#define FLAT_FLOAT_ARRAY 1" >>confdefs.h +else case e in #( + e) printf "%s\n" "#define FLAT_FLOAT_ARRAY 1" >>confdefs.h - flat_float_array=true + flat_float_array=true ;; +esac fi @@ -24285,12 +25224,12 @@ printf %s "checking whether mmap supports MAP_STACK... " >&6; } if test ${ocaml_cv_func_mmap_MAP_STACK+y} then : printf %s "(cached) " >&6 -else $as_nop - if test "$cross_compiling" = yes +else case e in #( + e) if test "$cross_compiling" = yes then : ocaml_cv_func_mmap_MAP_STACK=no -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -24315,13 +25254,16 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ocaml_cv_func_mmap_MAP_STACK=yes -else $as_nop - ocaml_cv_func_mmap_MAP_STACK=no +else case e in #( + e) ocaml_cv_func_mmap_MAP_STACK=no ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - + ;; +esac fi if test $cross_compiling = yes && \ @@ -24329,9 +25271,10 @@ fi then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no assumed" >&5 printf "%s\n" "no assumed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_func_mmap_MAP_STACK" >&5 -printf "%s\n" "$ocaml_cv_func_mmap_MAP_STACK" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ocaml_cv_func_mmap_MAP_STACK" >&5 +printf "%s\n" "$ocaml_cv_func_mmap_MAP_STACK" >&6; } ;; +esac fi if test "x$enable_mmap_map_stack" = xyes @@ -24344,11 +25287,12 @@ then : *) : ;; esac -else $as_nop - as_fn_error $? "mmap MAP_STACK requested but not found on $target" "$LINENO" 5 +else case e in #( + e) as_fn_error $? "mmap MAP_STACK requested but not found on $target" "$LINENO" 5 ;; +esac fi -else $as_nop - case $target,$ocaml_cv_func_mmap_MAP_STACK,$enable_mmap_map_stack in #( +else case e in #( + e) case $target,$ocaml_cv_func_mmap_MAP_STACK,$enable_mmap_map_stack in #( *-openbsd*,no,*|*-openbsd-*,*,no) : as_fn_error $? "mmap MAP_STACK is required on OpenBSD" "$LINENO" 5 ;; #( *-openbsd*,*,*) : @@ -24357,6 +25301,7 @@ else $as_nop printf "%s\n" "$as_me: Using MAP_STACK on OpenBSD due to stack checking" >&6;} ;; #( *) : ;; +esac ;; esac fi if test x"$ocaml_cv_func_mmap_MAP_STACK$enable_mmap_map_stack" = xyesyes @@ -24371,8 +25316,8 @@ oc_native_compflags='' if test x"$enable_function_sections" = "xno" then : function_sections=false -else $as_nop - case $arch in #( +else case e in #( + e) case $arch in #( amd64|arm64|power|riscv|s390x) : # not supported on arm32, see issue #9124. case $target in #( @@ -24416,18 +25361,21 @@ then : if test x"$enable_function_sections" = "xyes" then : as_fn_error $? "Function sections are not supported." "$LINENO" 5 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling function sections." >&5 -printf "%s\n" "$as_me: Disabling function sections." >&6;} -fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling function sections." >&5 +printf "%s\n" "$as_me: Disabling function sections." >&6;} ;; +esac fi +fi ;; +esac fi if test x"$with_afl" = "xyes" then : afl=true -else $as_nop - afl=false +else case e in #( + e) afl=false ;; +esac fi # Enable debugging support @@ -24449,8 +25397,9 @@ case "$toolchain" in #( if test "$system" = "mingw" then : entrypoint='_wmainCRTStartup' -else $as_nop - entrypoint='wmainCRTStartup' +else case e in #( + e) entrypoint='wmainCRTStartup' ;; +esac fi # Certainly for GCC, -nostdlib automatically adds -nostartfiles (clang's # documentation is not explicit on this point, but it would be unusual for @@ -24579,21 +25528,24 @@ then : # Cygwin path) and also systems lazily using slashes instead of # backslashes (i.e. C:/Backslashes/Scare/Us) to work. ocaml_prefix="$prefix" -else $as_nop - # $prefix was using backslashes - preserve these in the build, but +else case e in #( + e) # $prefix was using backslashes - preserve these in the build, but # continue to use slashes for the Makefile variables. if test "x$bindir" = 'x${exec_prefix}/bin' then : ocaml_bindir='${exec_prefix}\bin' -else $as_nop - ocaml_bindir="$bindir" +else case e in #( + e) ocaml_bindir="$bindir" ;; +esac fi if test "x$libdir" = 'x${exec_prefix}/lib/ocaml' then : ocaml_libdir='${exec_prefix}\lib\ocaml' -else $as_nop - ocaml_libdir="$libdir" -fi +else case e in #( + e) ocaml_libdir="$libdir" ;; +esac +fi ;; +esac fi ;; #( *) : ;; @@ -24621,11 +25573,12 @@ esac as_fn_error $? "--with-relative-libdir requires an explicit relative path" "$LINENO" 5 ;; esac fi -else $as_nop - if test x"$bindir_to_libdir" != 'x' +else case e in #( + e) if test x"$bindir_to_libdir" != 'x' then : as_fn_error $? "--with-relative-libdir and --libdir cannot both be specified" "$LINENO" 5 -fi +fi ;; +esac fi if test x"$bindir_to_libdir" != 'x' && test x"$TARGET_LIBDIR" != 'x' @@ -24674,16 +25627,18 @@ quintet2_byte="$(echo '0123456789abcdefghijklmnopqrstuv' | cut -c $(expr \( $res if $flat_float_array then : quintet2_zinc='0' -else $as_nop - quintet2_byte="4 + $quintet2_byte" - quintet2_zinc='4' +else case e in #( + e) quintet2_byte="4 + $quintet2_byte" + quintet2_zinc='4' ;; +esac fi # Bit 13 (fp) if $frame_pointers then : quintet2_native="8 + $quintet2_byte" -else $as_nop - quintet2_native="$quintet2_byte" +else case e in #( + e) quintet2_native="$quintet2_byte" ;; +esac fi # Bit 14 (tsan) if $tsan @@ -24699,8 +25654,9 @@ quintet2_native="$(echo '0123456789abcdefghijklmnopqrstuv' | cut -c $(expr \( $q if $arch64 then : quintet3_zinc='0' -else $as_nop - quintet3_zinc='1' +else case e in #( + e) quintet3_zinc='1' ;; +esac fi # Bit 16 (static) if ! $supports_shared_libraries @@ -24765,8 +25721,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -24796,14 +25752,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -24884,6 +25840,12 @@ LTLIBOBJS=$ac_ltlibobjs fi done +# Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + cclibs="$cclibs $mathlib $DLLIBS $PTHREAD_LIBS" saved_exec_prefix="$exec_prefix" @@ -24912,16 +25874,18 @@ fi if test "x$bindir_to_libdir" = 'x' then : ocaml_bindir="$HOST_BINDIR" -else $as_nop - ocaml_bindir='' +else case e in #( + e) ocaml_bindir='' ;; +esac fi if test x"$TARGET_BINDIR" = 'x' then : if test "x$bindir_to_libdir" = 'x' then : TARGET_BINDIR="$HOST_BINDIR" -else $as_nop - TARGET_BINDIR='.' +else case e in #( + e) TARGET_BINDIR='.' ;; +esac fi fi eval "ocaml_libdir=\"$ocaml_libdir\"" @@ -24930,8 +25894,9 @@ then : if test "x$bindir_to_libdir" = 'x' then : TARGET_LIBDIR="$ocaml_libdir" -else $as_nop - TARGET_LIBDIR="$bindir_to_libdir" +else case e in #( + e) TARGET_LIBDIR="$bindir_to_libdir" ;; +esac fi fi if test x"$launch_method_target" = 'x' @@ -24991,8 +25956,8 @@ fi mkdll_ldflags="\$(addprefix ${mkexe_ldflags_prefix},\$(OC_DLL_LDFLAGS)) \ ${mkdll_ldflags}" -else $as_nop - +else case e in #( + e) mkdll_ldflags='$(OC_DLL_LDFLAGS) $(LDFLAGS)' mkdll_ldflags_exp="${oc_dll_ldflags}" if test -n "${LDFLAGS}" @@ -25001,7 +25966,8 @@ then : fi mkexe_ldflags="\$(OC_LDFLAGS) \$(LDFLAGS)" mkexe_ldflags_exp="${oc_ldflags} ${LDFLAGS}" - + ;; +esac fi mkexe="$mkexe $mkexe_ldflags" mkexe_exp="$mkexe_exp $mkexe_ldflags_exp" @@ -25020,9 +25986,10 @@ fi then : mkexe_via_cc_ldflags=\ "/nologo \$(OUTPUTEXE)\$(1) \$(2) $mkexe_via_cc_ldflags" -else $as_nop - mkexe_via_cc_ldflags=\ -"$mkexe_via_cc_ldflags \$(OUTPUTEXE)\$(1) \$(2)" +else case e in #( + e) mkexe_via_cc_ldflags=\ +"$mkexe_via_cc_ldflags \$(OUTPUTEXE)\$(1) \$(2)" ;; +esac fi @@ -25054,7 +26021,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -25063,12 +26029,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -25140,7 +26107,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -25169,7 +26136,6 @@ as_fn_error () } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -25209,11 +26175,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -25227,11 +26194,12 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -25314,9 +26282,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -25397,10 +26365,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -25416,7 +26386,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by OCaml $as_me 5.6.0+dev0-2026-01-26, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -25449,7 +26419,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -25480,7 +26450,7 @@ Configuration commands: $config_commands Report bugs to . -OCaml home page: ." +OCaml home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` @@ -25489,10 +26459,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ OCaml config.status 5.6.0+dev0-2026-01-26 -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -25553,8 +26523,8 @@ do ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ @@ -25562,8 +26532,8 @@ Try \`$0 --help' for more information.";; ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -25941,7 +26911,7 @@ do "ocamltest/ocamltest_unix.ml") CONFIG_LINKS="$CONFIG_LINKS ocamltest/ocamltest_unix.ml:${ocamltest_unix_mod}" ;; "runtime/ld.conf") CONFIG_COMMANDS="$CONFIG_COMMANDS runtime/ld.conf" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -25962,7 +26932,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -25986,7 +26956,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -26144,13 +27114,13 @@ fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. +# This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF -# Transform confdefs.h into an awk script `defines.awk', embedded as +# Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. @@ -26260,7 +27230,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -26282,19 +27252,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -26422,7 +27392,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -26452,9 +27422,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" diff --git a/configure.ac b/configure.ac index d1172475bc27..dea671c982f6 100644 --- a/configure.ac +++ b/configure.ac @@ -15,13 +15,13 @@ # Process this file with autoconf to produce a configure script. -# Require Autoconf 2.71 for repeatability in CI -AC_PREREQ([2.71]) +# Require Autoconf 2.72 for repeatability in CI +AC_PREREQ([2.72]) AC_INIT([OCaml], [OCAML__VERSION], [caml-list@inria.fr], [ocaml], - [http://www.ocaml.org]) + [https://ocaml.org/]) AC_MSG_NOTICE([Configuring OCaml version AC_PACKAGE_VERSION]) @@ -1180,24 +1180,24 @@ AS_CASE([$target], [internal_cflags="$internal_cflags -mprfchw"], [], [$warn_error_flag])]) # Enable SSE2 on x86 mingw to avoid using 80-bit registers. -# Enable 64-bit time_t in time.h AS_CASE([$target], [i686-w64-mingw32*], - [internal_cflags="$internal_cflags -mfpmath=sse -msse2" - # This instructs _mingw.h to adopt the switch in Visual Studio 8 (2005) to - # make time_t a 64-bit value. - internal_cppflags="$internal_cppflags -D__MINGW_USE_VC2005_COMPAT"]) - -# Use 64-bit file offset if possible -# See also AC_SYS_LARGEFILE -# Problem: flags are added to CC rather than CPPFLAGS + [internal_cflags="$internal_cflags -mfpmath=sse -msse2"]) + +# Default to enabling large file support and year 2038 support on 32-bit. AS_CASE([$target], - [*-w64-mingw32*|*-pc-windows], [], - [common_cppflags="$common_cppflags -D_FILE_OFFSET_BITS=64"]) + [*-pc-windows], [], # LFS and 64-bit time_t are always enabled. + [AC_SYS_YEAR2038_RECOMMENDED + AS_CASE([$ac_cv_sys_largefile_opts], + ["none needed"|"support not detected"], [], + [common_cppflags="$common_cppflags $ac_cv_sys_largefile_opts"]) + AS_CASE([$ac_cv_sys_year2038_opts], + ["none needed"|"support not detected"], [], + [common_cppflags="$common_cppflags $ac_cv_sys_year2038_opts"])]) # Require Windows 8 / Server 2012 or later AS_CASE([$target], - [*-w64-mingw32*|*-pc-windows], + [*-pc-cygwin|*-w64-mingw32*|*-pc-windows], [internal_cppflags="$internal_cppflags -D_WIN32_WINNT=0x602"]) # Adjust according to target @@ -1633,6 +1633,7 @@ AS_IF([test x"$supports_shared_libraries" = 'xtrue'], [[i[3456]86-*-netbsd*]], [natdynlink=true], [x86_64-*-netbsd*], [natdynlink=true], [[i[3456]86-*-haiku*]], [natdynlink=true], + [x86_64-*-haiku*], [natdynlink=true], [arm*-*-linux*], [natdynlink=true], [arm*-*-freebsd*], [natdynlink=true], [earm*-*-netbsd*], [natdynlink=true], @@ -1740,7 +1741,7 @@ AS_CASE([$target], [x86_64-*-openbsd*], [has_native_backend=yes; arch=amd64; system=openbsd], [x86_64-*-haiku*], - [arch=amd64; system=beos], + [has_native_backend=yes; arch=amd64; system=beos], [arm64-*-darwin*], [has_native_backend=yes; arch=arm64; system=macosx], [aarch64-*-darwin*], @@ -2856,7 +2857,8 @@ AS_IF([$native_compiler], AS_IF([test x"$enable_frame_pointers" = "xyes"], [AS_CASE([$target], [x86_64-*-linux*|x86_64-*-darwin*|x86_64-*-freebsd*|x86_64-*-dragonfly*| \ - aarch64-*-linux*|aarch64-*-darwin*|aarch64-*-freebsd*|riscv64-*-linux*], + aarch64-*-linux*|aarch64-*-darwin*|aarch64-*-freebsd*|riscv64-*-linux*| \ + powerpc64-*-linux*|powerpc64le-*-linux*], [AS_CASE([$ocaml_cc_vendor], [clang-*|gcc-*], [common_cflags="$common_cflags -g -fno-omit-frame-pointer" @@ -2932,7 +2934,8 @@ AS_IF([$build_ocamltest], AC_CONFIG_LINKS([ ocamltest/ocamltest_unix.ml:${ocamltest_unix_mod} ]) - AC_CHECK_PROGS([DIFF], [patdiff diff], + AC_CHECK_PROGS([DIFF], [patdiff diff], [false]) + AS_IF([test x"$DIFF" = "xfalse"], [AC_MSG_ERROR([ocamltest requires a diff tool])]) AS_CASE([$DIFF], [diff], [flags_to_test='--strip-trailing-cr -u']) AC_CACHE_CHECK([for extra $DIFF flags], diff --git a/debugger/debugger_lexer.mll b/debugger/debugger_lexer.mll index dc40db981c72..d9e8be7c8130 100644 --- a/debugger/debugger_lexer.mll +++ b/debugger/debugger_lexer.mll @@ -20,13 +20,13 @@ open Debugger_parser let ident_for_extended raw_name = - match Misc.Utf8_lexeme.normalize raw_name with + match Utf8_lexeme.normalize raw_name with | Error _ -> raise Parsing.Parse_error | Ok name -> - match Misc.Utf8_lexeme.validate_identifier name with - | Misc.Utf8_lexeme.Valid -> name - | Misc.Utf8_lexeme.Invalid_character _ - | Misc.Utf8_lexeme.Invalid_beginning _ -> + match Utf8_lexeme.validate_identifier name with + | Utf8_lexeme.Valid -> name + | Utf8_lexeme.Invalid_character _ + | Utf8_lexeme.Invalid_beginning _ -> raise Parsing.Parse_error exception Int_overflow @@ -80,7 +80,7 @@ and lexeme = (* Read a lexeme *) | ident_ext as raw_name { let name = ident_for_extended raw_name in - if Misc.Utf8_lexeme.is_capitalized name + if Utf8_lexeme.is_capitalized name then UIDENT name else LIDENT name } diff --git a/lambda/translcore.ml b/lambda/translcore.ml index 27435a106f89..601e145abf93 100644 --- a/lambda/translcore.ml +++ b/lambda/translcore.ml @@ -735,7 +735,7 @@ and transl_apply ~scopes the function as taking each argument individually (in [trans_curried_function]). *) -and transl_function_without_attributes ~scopes loc repr params body = +and transl_function_without_attributes ~scopes ~env loc repr params body = let return = match body with | Tfunction_body body -> @@ -746,9 +746,9 @@ and transl_function_without_attributes ~scopes loc repr params body = (* With Camlp4/ppx, a pattern matching might be empty *) Pgenval in - transl_tupled_function ~scopes loc return repr params body + transl_tupled_function ~scopes ~env loc return repr params body -and transl_tupled_function ~scopes loc return repr params body = +and transl_tupled_function ~scopes ~env loc return repr params body = (* Cases are eligible for flattening if they belong to the only param. *) let eligible_cases = match params, body with @@ -772,6 +772,11 @@ and transl_tupled_function ~scopes loc return repr params body = (fun {c_lhs; c_guard; c_rhs} -> (Matching.flatten_pattern size c_lhs, c_guard, c_rhs)) cases in + (* if the match is partial, we cannot rely on GADT equations *) + let local_equations = match partial with + | Partial -> Some (Env.freeze_local_equations env) + | Total -> None + in let kinds = (* All the patterns might not share the same types. We must take the union of the patterns types *) @@ -779,13 +784,13 @@ and transl_tupled_function ~scopes loc return repr params body = | [] -> assert false | (pats, _, _) :: cases -> let first_case_kinds = - List.map (fun pat -> value_kind pat.pat_env pat.pat_type) pats + List.map (pattern_kind local_equations) pats in List.fold_left (fun kinds (pats, _, _) -> List.map2 (fun kind pat -> value_kind_union kind - (value_kind pat.pat_env pat.pat_type)) + (pattern_kind local_equations pat)) kinds pats) first_case_kinds cases in @@ -797,11 +802,11 @@ and transl_tupled_function ~scopes loc return repr params body = Matching.for_tupled_function ~scopes loc params (transl_tupled_cases ~scopes pats_expr_list) partial) with Matching.Cannot_flatten -> - transl_curried_function ~scopes loc return repr params body + transl_curried_function ~scopes ~env loc return repr params body end - | _ -> transl_curried_function ~scopes loc return repr params body + | _ -> transl_curried_function ~scopes ~env loc return repr params body -and transl_curried_function ~scopes loc return repr params body = +and transl_curried_function ~scopes ~env loc return repr params body = let cases_param, body = match body with | Tfunction_body body -> @@ -826,13 +831,32 @@ and transl_curried_function ~scopes loc return repr params body = in Some (param, kind), body in + (* We freeze local GADTs equations to the set existing before the + first partial match to avoid using equations that might be only + valid if a match succeeds. *) + let _, params = List.fold_left_map (fun (local_equations, prev_env) fp -> + let local_equations = + match local_equations, fp.fp_partial, fp.fp_kind with + | Some _, _, _ -> local_equations + | None, Total, Tparam_pat _ -> local_equations + | None, Partial, _ + (* in default arguments [?(pat=exp)], [exp] can raise and + thus even a [Total] pattern can fail. *) + | None, _, Tparam_optional_default _ -> + Some (Env.freeze_local_equations prev_env) + in + let env = match fp.fp_kind with + | Tparam_pat pat | Tparam_optional_default (pat,_) -> pat.pat_env + in + (local_equations,env), (fp, local_equations) + ) (None, env) params in let body, params = - List.fold_right (fun fp (body, params) -> + List.fold_right (fun (fp, local_equations) (body, params) -> let param = fp.fp_param in let param_loc = fp.fp_loc in match fp.fp_kind with | Tparam_pat pat -> - let kind = value_kind pat.pat_env pat.pat_type in + let kind = pattern_kind local_equations pat in let body = Matching.for_function ~scopes param_loc None (Lvar param) [ pat, body ] @@ -883,7 +907,8 @@ and transl_function ~scopes e params body = event_function ~scopes e (function repr -> let params, body = fuse_method_arity params body in - transl_function_without_attributes ~scopes e.exp_loc repr params body) + let env = e.exp_env and loc = e.exp_loc in + transl_function_without_attributes ~env ~scopes loc repr params body) in let attr = function_attribute_disallowing_arity_fusion in let loc = of_location ~scopes e.exp_loc in @@ -1277,7 +1302,7 @@ and transl_letop ~scopes loc env let_ ands param case partial = (function repr -> let loc = case.c_rhs.exp_loc in let ghost_loc = { loc with loc_ghost = true } in - transl_function_without_attributes ~scopes loc repr [] + transl_function_without_attributes ~scopes ~env loc repr [] (Tfunction_cases { cases = [case]; param; partial; loc = ghost_loc; exp_extra = None; attributes = []; })) diff --git a/lambda/value_rec_compiler.ml b/lambda/value_rec_compiler.ml index c51a06e31c09..a23fc4c69f2a 100644 --- a/lambda/value_rec_compiler.ml +++ b/lambda/value_rec_compiler.ml @@ -278,7 +278,9 @@ let compute_static_size lam = | Pmakearray (kind, _) -> let size = List.length args in begin match kind with - | Pgenarray | Paddrarray | Pintarray -> + | Pgenarray -> + dynamic_size () + | Paddrarray | Pintarray -> Block (Regular_block size) | Pfloatarray -> Block (Float_record size) diff --git a/ocamldoc/odoc_lexer.mll b/ocamldoc/odoc_lexer.mll index 728b8c337efe..fb56f7b4f322 100644 --- a/ocamldoc/odoc_lexer.mll +++ b/ocamldoc/odoc_lexer.mll @@ -89,22 +89,22 @@ let remove_stars s = Str.global_replace (Str.regexp ("^"^blank^"*\\*")) "" s let validate_encoding raw_name = - match Misc.Utf8_lexeme.normalize raw_name with + match Utf8_lexeme.normalize raw_name with | Error s -> failwith (Format.asprintf "Invalid encoding %s" s) | Ok name -> name let validate_ident raw_name = let name = validate_encoding raw_name in - match Misc.Utf8_lexeme.validate_identifier name with - | Misc.Utf8_lexeme.Valid -> name - | Misc.Utf8_lexeme.Invalid_character u -> + match Utf8_lexeme.validate_identifier name with + | Utf8_lexeme.Valid -> name + | Utf8_lexeme.Invalid_character u -> failwith (Format.asprintf "Invalid character U+%04X" (Uchar.to_int u)) - | Misc.Utf8_lexeme.Invalid_beginning u -> + | Utf8_lexeme.Invalid_beginning u -> failwith (Format.asprintf "Invalid first character U+%04X" (Uchar.to_int u)) let validate_exception_uident raw_name = let name = validate_ident raw_name in - if Misc.Utf8_lexeme.is_capitalized name then name else + if Utf8_lexeme.is_capitalized name then name else failwith (Format.asprintf "Invalid exception name: %s" name) } diff --git a/ocamldoc/odoc_ocamlhtml.mll b/ocamldoc/odoc_ocamlhtml.mll index 11333b0b6087..fb2fcad4efea 100644 --- a/ocamldoc/odoc_ocamlhtml.mll +++ b/ocamldoc/odoc_ocamlhtml.mll @@ -208,7 +208,7 @@ let comment_start_pos = ref [] (** Normalizing utf-8 *) let normalize raw_name = (* we are printing documentation, it is too late to be strict *) - match Misc.Utf8_lexeme.normalize raw_name with + match Utf8_lexeme.normalize raw_name with | Error s -> s | Ok name -> name @@ -268,7 +268,7 @@ rule token = parse print "?"; print name ; print ":"; token lexbuf } | (ident_ext as raw_id) { let s = normalize raw_id in - if Misc.Utf8_lexeme.is_capitalized s then + if Utf8_lexeme.is_capitalized s then (print_class constructor_class (Lexing.lexeme lexbuf); token lexbuf) else try diff --git a/ocamltest/builtin_actions.ml b/ocamltest/builtin_actions.ml index 08af60c65ea2..4e4c313f662c 100644 --- a/ocamltest/builtin_actions.ml +++ b/ocamltest/builtin_actions.ml @@ -183,6 +183,15 @@ let macosx = make "on a MacOS system" "not on a MacOS system") +let beos_system = "beos" + +let beos_haiku = make + ~name:"beos_haiku" + ~description:"Pass if running on a BeOS/Haiku system" + (Actions_helpers.pass_or_skip (Ocamltest_config.system = beos_system) + "on a BeOS/Haiku system" + "not on a beOS/Haiku system") + let not_macos_amd64_tsan = make ~name:"not_macos_amd64_tsan" ~description:"Pass if not running on a MacOS amd64 system with TSan enabled" @@ -434,6 +443,7 @@ let _ = bsd; linux; macosx; + beos_haiku; not_macos_amd64_tsan; has_cxx; arch32; diff --git a/ocamltest/run_unix.c b/ocamltest/run_unix.c index c4fd6115a2a0..18da5e40bbf3 100644 --- a/ocamltest/run_unix.c +++ b/ocamltest/run_unix.c @@ -244,8 +244,8 @@ static int handle_process_termination( if (WIFEXITED(status)) return WEXITSTATUS(status); if ( !WIFSIGNALED(status) ) - error("Process %lld neither terminated normally nor received a" \ - "signal!?", (long long) pid); + error("Process %lld neither terminated normally nor received a signal!?", + (long long) pid); /* From here we know that the process terminated due to a signal */ signal = WTERMSIG(status); diff --git a/otherlibs/runtime_events/runtime_events.ml b/otherlibs/runtime_events/runtime_events.ml index 6cd30e5bc602..36d8d2db7a68 100644 --- a/otherlibs/runtime_events/runtime_events.ml +++ b/otherlibs/runtime_events/runtime_events.ml @@ -44,6 +44,9 @@ type runtime_counter = | EV_C_MAJOR_SLICE_BUDGET | EV_C_MINOR_ALLOCATED_WORDS | EV_C_MINOR_PROMOTED_WORDS +| EV_C_MAJOR_DIRECT_ALLOCATED_WORDS +| EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS +| EV_C_MAJOR_RESUMED_ALLOCATED_WORDS type runtime_phase = | EV_EXPLICIT_GC_SET @@ -95,6 +98,8 @@ type runtime_phase = | EV_COMPACT_FORWARD | EV_COMPACT_RELEASE | EV_EMPTY_MINOR +| EV_MINOR_EPHE_CLEAN +| EV_EXPLICIT_GC_RAMP_UP type lifecycle = EV_RING_START @@ -153,6 +158,12 @@ let runtime_counter_name counter = "major_slice_target" | EV_C_MAJOR_SLICE_BUDGET -> "major_slice_budget" + | EV_C_MAJOR_DIRECT_ALLOCATED_WORDS -> + "major_direct_allocated_words" + | EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS -> + "major_suspended_allocated_words" + | EV_C_MAJOR_RESUMED_ALLOCATED_WORDS -> + "major_resumed_allocated_words" let runtime_phase_name phase = @@ -206,6 +217,8 @@ let runtime_phase_name phase = | EV_COMPACT_FORWARD -> "compaction_forward" | EV_COMPACT_RELEASE -> "compaction_release" | EV_EMPTY_MINOR -> "empty_minor" + | EV_MINOR_EPHE_CLEAN -> "minor_ephe_clean" + | EV_EXPLICIT_GC_RAMP_UP -> "explicit_gc_ramp_up" let lifecycle_name lifecycle = match lifecycle with @@ -292,58 +305,38 @@ module User = struct let register name tag typ = user_register name (Some tag) typ - let with_write_buffer = - (* [caml_runtime_events_user_write] needs a write buffer in which - the user-provided serializer will write its data. The user may - want to write a lot of custom events fast, so we want to cache - the write buffer across calls. - - To be safe for multi-domain programs, we use domain-local - storage for the write buffer. To accommodate for multi-threaded - programs (without depending on the Thread module), we store - a list of caches for each domain. This might leak a bit of - memory: the number of buffers for a domain is equal to the - maximum number of threads that requested a buffer concurrently, - and we never free those buffers. *) - let create_buffer () = Bytes.create 1024 in - let write_buffer_cache = Domain.DLS.new_key (fun () -> ref []) in - let pop_or_create buffers = - (* intended to be thread-safe *) - (* begin atomic *) - match !buffers with - | [] -> - (* end atomic *) - create_buffer () - | b::bs -> - buffers := bs; - (* end atomic *) - b - in - let[@poll error] compare_and_set r old_val new_val = - if !r == old_val then (r := new_val; true) - else false - in - let rec push buffers buf = - (* intended to be thread-safe *) - let old_buffers = !buffers in - let new_buffers = buf :: old_buffers in - (* retry if !buffers changed under our feet: *) - if compare_and_set buffers old_buffers new_buffers - then () - else push buffers buf - in - fun consumer -> - let buffers = Domain.DLS.get write_buffer_cache in - let buf = pop_or_create buffers in - Fun.protect ~finally:(fun () -> push buffers buf) - (fun () -> consumer buf) + (* [caml_runtime_events_user_write] needs a write buffer in which + the user-provided serializer will write its data. The user may + want to write a lot of custom events fast, so we want to cache + the write buffer across calls. + + The cache lives in domain-local storage. This makes it safe for + multi-domain programs. The [Atomic] is also necessary: + systhreads of the same domain share the slot, and the runtime + can stop a thread, or run a signal handler, in the serializer + callback. Each domain caches a single buffer. The slot is empty + while the buffer is in use. If two writes on the same domain + overlap, the second write allocates a new buffer, and the + writer that completes last keeps its buffer. Thus each domain + keeps at most one buffer between writes. *) + let write_buffer = Domain.DLS.new_key (fun () -> Atomic.make Bytes.empty) let write (type a) (event : a t) (value : a) = if runtime_events_are_active () then (* only custom events need a write buffer *) match event.typ with | Type.Custom _ -> - with_write_buffer (fun buf -> user_write buf event value) + let cache = Domain.DLS.get write_buffer in + let buf = Atomic.exchange cache Bytes.empty in + (* The buffer size is 1024 bytes. This size must be equal to + the maximum value length in the documentation of + [User.register] in runtime_events.mli, and to the size of + the consumer's read buffer in runtime_events_consumer.c. *) + let buf = if Bytes.length buf = 0 then Bytes.create 1024 else buf in + begin match user_write buf event value with + | () -> Atomic.set cache buf + | exception exn -> Atomic.set cache buf; raise exn + end | Type.Unit | Type.Int | Type.Span -> user_write Bytes.empty event value diff --git a/otherlibs/runtime_events/runtime_events.mli b/otherlibs/runtime_events/runtime_events.mli index 2cf0047502d3..e43a3d04b85f 100644 --- a/otherlibs/runtime_events/runtime_events.mli +++ b/otherlibs/runtime_events/runtime_events.mli @@ -201,6 +201,28 @@ Total {b words} promoted from the minor heap of this Domain to the major heap in the last minor collection. @since 5.4 *) +| EV_C_MAJOR_DIRECT_ALLOCATED_WORDS +(** +Direct allocations to the major heap of this Domain in {b words}, since the +last major slice. This excludes words promoted from the minor heap, which are +counted in EV_C_MAJOR_ALLOCATED_WORDS. +@since 5.6 +*) +| EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS +(** +Allocations of this Domain in {b words} that were suspended during a GC +ramp-up phase, since the last major slice. The major slice paces against +EV_C_MAJOR_ALLOCATED_WORDS less this counter plus +EV_C_MAJOR_RESUMED_ALLOCATED_WORDS. Zero outside a ramp-up phase. +@since 5.6 +*) +| EV_C_MAJOR_RESUMED_ALLOCATED_WORDS +(** +Allocations of this Domain in {b words} returned by Gc.ramp_down since the +last major slice. Work suspended during a ramp-up phase and never resumed is +never collected against. +@since 5.6 +*) (** The type for span events emitted by the runtime. *) type runtime_phase = @@ -469,6 +491,19 @@ Event spanning a domain needing to empty its minor heap for a new allocation. This includes time spent trying to become stop-the-world leader. @since 5.4 *) +| EV_MINOR_EPHE_CLEAN +(** +Event spanning the cleaning of ephemerons whose keys were locked during a minor +GC. Keys that were promoted are updated to their new location and ephemerons +whose keys were collected are emptied. +@since 5.4 +*) +| EV_EXPLICIT_GC_RAMP_UP +(** +Event spanning a call to Gc.ramp_up, during which the major slice suspends the +collection work that new allocations would otherwise incur. +@since 5.6 +*) (** Lifecycle events for Runtime_events and domains. *) type lifecycle = diff --git a/otherlibs/runtime_events/runtime_events_consumer.c b/otherlibs/runtime_events/runtime_events_consumer.c index 8b94ab4ee6a5..e24978d499f5 100644 --- a/otherlibs/runtime_events/runtime_events_consumer.c +++ b/otherlibs/runtime_events/runtime_events_consumer.c @@ -506,6 +506,34 @@ caml_runtime_events_read_poll(struct caml_runtime_events_cursor *cursor, if (msg_length > RUNTIME_EVENTS_MAX_MSG_LENGTH || ring_masked_pos + msg_length > cursor->metadata.ring_size_elements) { + /* The header may have been overwritten by the writer wrapping around + between the ring_head check above and the read of the header, in + which case it is not a header at all. Re-check before reporting + corruption, so that an overwrite is reported as lost events. + + The fence keeps the header read above the re-read. An acquire load + orders later accesses, not earlier ones, and the control dependency + on the header does not order load against load, so without it the + re-read could be satisfied first and miss the advance. */ + atomic_thread_fence(memory_order_acquire); + + ring_head = + atomic_load_acquire(&runtime_events_buffer_header->ring_head); + + if (ring_head > cursor->current_positions[domain_num]) { + int lost_words = ring_head - cursor->current_positions[domain_num]; + cursor->current_positions[domain_num] = ring_head; + + if (cursor->lost_events) { + if( !(cursor->lost_events(domain_num, callback_data, + lost_words)) ) { + early_exit = 1; + } + } + + continue; + } + atomic_store(&cursor->cursor_in_poll, 0); return E_CORRUPT_STREAM; } @@ -1242,9 +1270,8 @@ CAMLprim value caml_ml_runtime_events_create_cursor(value path_pid_option) { caml_failwith("Runtime_events: could not map underlying runtime_events." ); case E_NO_CURRENT_RING: - caml_failwith( - "Runtime_events: no ring for current process. \ - Was runtime_events started?"); + caml_failwith("Runtime_events: no ring for current process. " + "Was runtime_events started?"); default: caml_failwith("Runtime_events: could not obtain cursor"); } diff --git a/otherlibs/unix/fcntl.c b/otherlibs/unix/fcntl.c index 8cfd58e3baeb..760e779fed0a 100644 --- a/otherlibs/unix/fcntl.c +++ b/otherlibs/unix/fcntl.c @@ -51,6 +51,6 @@ CAMLprim value caml_unix_set_close_on_exec(value fd) CAMLprim value caml_unix_clear_close_on_exec(value fd) { - caml_unix_clear_cloexec(Int_val(fd), "set_close_on_exec", Nothing); + caml_unix_clear_cloexec(Int_val(fd), "clear_close_on_exec", Nothing); return Val_unit; } diff --git a/otherlibs/unix/gethost.c b/otherlibs/unix/gethost.c index 934cc4908709..229c4bb9c077 100644 --- a/otherlibs/unix/gethost.c +++ b/otherlibs/unix/gethost.c @@ -84,7 +84,7 @@ CAMLprim value caml_unix_gethostbyaddr(value a) struct hostent * hp; int addr_type = AF_INET; socklen_t addr_len = 4; -#if HAS_IPV6 +#ifdef HAS_IPV6 struct in6_addr in6; if (caml_string_length(a) == 16) { addr_type = AF_INET6; @@ -95,7 +95,7 @@ CAMLprim value caml_unix_gethostbyaddr(value a) #endif in4 = GET_INET_ADDR(a); addr = (char *)&in4; -#if HAS_IPV6 +#ifdef HAS_IPV6 } #endif #if !defined(HAS_GETHOSTBYADDR_R) diff --git a/otherlibs/unix/gethostname.c b/otherlibs/unix/gethostname.c index df29c59e97cf..54281c81a2ca 100644 --- a/otherlibs/unix/gethostname.c +++ b/otherlibs/unix/gethostname.c @@ -21,7 +21,7 @@ #endif #include "caml/unixsupport.h" -#ifdef HAS_GETHOSTNAME +#if defined(HAS_GETHOSTNAME) #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 256 @@ -35,8 +35,7 @@ CAMLprim value caml_unix_gethostname(value unit) return caml_copy_string(name); } -#else -#ifdef HAS_UNAME +#elif defined(HAS_UNAME) #include @@ -44,7 +43,7 @@ CAMLprim value caml_unix_gethostname(value unit) { struct utsname un; uname(&un); - return copy_string(un.nodename); + return caml_copy_string(un.nodename); } #else @@ -53,4 +52,3 @@ CAMLprim value caml_unix_gethostname(value unit) { caml_invalid_argument("gethostname not implemented"); } #endif -#endif diff --git a/otherlibs/unix/link_unix.c b/otherlibs/unix/link_unix.c index 5f5b2b731f07..1c460cac667b 100644 --- a/otherlibs/unix/link_unix.c +++ b/otherlibs/unix/link_unix.c @@ -25,6 +25,7 @@ #include #include #include +#include CAMLprim value caml_unix_link(value follow, value path1, value path2) { @@ -32,19 +33,22 @@ CAMLprim value caml_unix_link(value follow, value path1, value path2) char * p1; char * p2; int ret; + bool follow_is_none = Is_none(follow); caml_unix_check_path(path1, "link"); caml_unix_check_path(path2, "link"); p1 = caml_stat_strdup(String_val(path1)); p2 = caml_stat_strdup(String_val(path2)); +# ifdef AT_SYMLINK_FOLLOW + int flags = + Is_some(follow) && Bool_val(Some_val(follow)) + ? AT_SYMLINK_FOLLOW + : 0; +# endif caml_enter_blocking_section(); - if (Is_none(follow)) + if (follow_is_none) ret = link(p1, p2); else { # ifdef AT_SYMLINK_FOLLOW - int flags = - Is_some(follow) && Bool_val(Some_val(follow)) - ? AT_SYMLINK_FOLLOW - : 0; ret = linkat(AT_FDCWD, p1, AT_FDCWD, p2, flags); # else ret = -1; errno = ENOSYS; diff --git a/otherlibs/unix/lockf_unix.c b/otherlibs/unix/lockf_unix.c index 0dfac2a72044..765b69d5aa05 100644 --- a/otherlibs/unix/lockf_unix.c +++ b/otherlibs/unix/lockf_unix.c @@ -31,7 +31,7 @@ CAMLprim value caml_unix_lockf(value fd, value cmd, value span) fildes = Int_val(fd); size = Long_val(span); - l.l_whence = 1; + l.l_whence = SEEK_CUR; if (size < 0) { l.l_start = size; l.l_len = -size; @@ -84,19 +84,21 @@ CAMLprim value caml_unix_lockf(value fd, value cmd, value span) return Val_unit; } -#else - -#ifdef HAS_LOCKF +#elif defined(HAS_LOCKF) #include static const int lock_command_table[] = { F_ULOCK, F_LOCK, F_TLOCK, F_TEST, F_LOCK, F_TLOCK }; -CAMLprim value caml_unix_lockf(value fd, value cmd, value span) +CAMLprim value caml_unix_lockf(value fd, value vcmd, value span) { - if (lockf(Int_val(fd), lock_command_table[Int_val(cmd)], Long_val(span)) - == -1) caml_uerror("lockf", Nothing); + int ret; + int cmd = lock_command_table[Int_val(vcmd)]; + if (cmd == F_BLOCK) caml_enter_blocking_section(); + ret = lockf(Int_val(fd), cmd, Long_val(span)); + if (cmd == F_BLOCK) caml_leave_blocking_section(); + if (ret == -1) caml_uerror("lockf", Nothing); return Val_unit; } @@ -106,4 +108,3 @@ CAMLprim value caml_unix_lockf(value fd, value cmd, value span) { caml_invalid_argument("lockf not implemented"); } #endif -#endif diff --git a/otherlibs/unix/mmap_unix.c b/otherlibs/unix/mmap_unix.c index 26f785de3d39..5a61a39d0eaf 100644 --- a/otherlibs/unix/mmap_unix.c +++ b/otherlibs/unix/mmap_unix.c @@ -50,20 +50,19 @@ extern value caml_unix_mapped_alloc(int, int, void *, intnat *); static int caml_grow_file(int fd, file_offset size) { char c; - int p; /* First use pwrite for growing - it is a conservative method, as it can never happen that we shrink by accident */ #ifdef HAS_PWRITE c = 0; - p = pwrite(fd, &c, 1, size - 1); + ssize_t p = pwrite(fd, &c, 1, size - 1); #else /* Emulate pwrite with lseek. This should only be necessary on ancient systems nowadays */ - file_offset currpos; + file_offset currpos, p; currpos = lseek(fd, 0, SEEK_CUR); if (currpos != -1) { p = lseek(fd, size - 1, SEEK_SET); @@ -87,7 +86,7 @@ static int caml_grow_file(int fd, file_offset size) p = ftruncate(fd, size); } #endif - return p; + return (int) p; } diff --git a/otherlibs/unix/putenv.c b/otherlibs/unix/putenv.c index 2c1a3f17d9b7..03bb1cbabc8b 100644 --- a/otherlibs/unix/putenv.c +++ b/otherlibs/unix/putenv.c @@ -36,7 +36,7 @@ CAMLprim value caml_unix_putenv(value name, value val) if (! (caml_string_is_c_safe(name) && caml_string_is_c_safe(val))) caml_unix_error(EINVAL, "putenv", name); - s = caml_stat_strconcat(3, name, "=", val); + s = caml_stat_strconcat(3, String_val(name), "=", String_val(val)); p = caml_stat_strdup_to_os(s); caml_stat_free(s); ret = putenv_os(p); diff --git a/otherlibs/unix/realpath_unix.c b/otherlibs/unix/realpath_unix.c index 4c66a0243ce6..0b4f6515721c 100644 --- a/otherlibs/unix/realpath_unix.c +++ b/otherlibs/unix/realpath_unix.c @@ -24,11 +24,15 @@ CAMLprim value caml_unix_realpath (value p) { CAMLparam1 (p); - char *r; + char *path, *r; value rp; caml_unix_check_path (p, "realpath"); - r = realpath (String_val (p), NULL); + path = caml_stat_strdup(String_val(p)); + caml_enter_blocking_section(); + r = realpath (path, NULL); + caml_leave_blocking_section(); + caml_stat_free(path); if (r == NULL) { caml_uerror ("realpath", p); } rp = caml_copy_string (r); free (r); diff --git a/otherlibs/unix/realpath_win32.c b/otherlibs/unix/realpath_win32.c index cc790ff44ebd..d70b31d5670d 100644 --- a/otherlibs/unix/realpath_win32.c +++ b/otherlibs/unix/realpath_win32.c @@ -37,9 +37,11 @@ CAMLprim value caml_unix_realpath (value p) caml_unix_check_path (p, "realpath"); wp = caml_stat_strdup_to_utf16 (String_val (p)); + caml_enter_blocking_section(); h = CreateFile (wp, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); + caml_leave_blocking_section(); caml_stat_free (wp); if (h == INVALID_HANDLE_VALUE) @@ -48,7 +50,9 @@ CAMLprim value caml_unix_realpath (value p) caml_uerror ("realpath", p); } + caml_enter_blocking_section(); wr_len = GetFinalPathNameByHandle (h, NULL, 0, VOLUME_NAME_DOS); + caml_leave_blocking_section(); if (wr_len == 0) { caml_win32_maperr (GetLastError ()); @@ -57,7 +61,9 @@ CAMLprim value caml_unix_realpath (value p) } wr = caml_stat_alloc ((wr_len + 1) * sizeof (wchar_t)); + caml_enter_blocking_section(); wr_len = GetFinalPathNameByHandle (h, wr, wr_len, VOLUME_NAME_DOS); + caml_leave_blocking_section(); if (wr_len == 0) { diff --git a/otherlibs/unix/rename.c b/otherlibs/unix/rename.c index c73966aa0c53..46c6a6aa47b7 100644 --- a/otherlibs/unix/rename.c +++ b/otherlibs/unix/rename.c @@ -22,6 +22,7 @@ CAMLprim value caml_unix_rename(value oldname, value newname) { + CAMLparam2(oldname, newname); char_os * p_old; char_os * p_new; int ret; @@ -36,5 +37,5 @@ CAMLprim value caml_unix_rename(value oldname, value newname) caml_stat_free(p_old); if (ret == -1) caml_uerror("rename", oldname); - return Val_unit; + CAMLreturn(Val_unit); } diff --git a/otherlibs/unix/select_win32.c b/otherlibs/unix/select_win32.c index 9e866c33fdcd..ecf0b3d7cd03 100644 --- a/otherlibs/unix/select_win32.c +++ b/otherlibs/unix/select_win32.c @@ -125,21 +125,11 @@ typedef enum _SELECTTYPE { SELECT_TYPE_SOCKET /* Classic select */ } SELECTTYPE; -/* Data structure for results */ -typedef struct _SELECTRESULT { - LIST lst; - SELECTMODE EMode; - int lpOrigIdx; -} SELECTRESULT; - -typedef SELECTRESULT *LPSELECTRESULT; - /* Data structure for query */ typedef struct _SELECTQUERY { LIST lst; SELECTMODE EMode; HANDLE hFileDescr; - int lpOrigIdx; unsigned int uFlagsFd; /* Copy of filedescr->flags_fd */ } SELECTQUERY; @@ -148,11 +138,13 @@ typedef SELECTQUERY *LPSELECTQUERY; typedef struct _SELECTDATA { LIST lst; SELECTTYPE EType; - /* Sockets may generate a result for all three lists from one single - query object - */ - SELECTRESULT aResults[MAXIMUM_SELECT_OBJECTS * 3]; - DWORD nResultsCount; + /* Sockets may generate results for all three lists from one query. */ + SELECTHANDLESET readResults; + HANDLE aReadResults[MAXIMUM_SELECT_OBJECTS]; + SELECTHANDLESET writeResults; + HANDLE aWriteResults[MAXIMUM_SELECT_OBJECTS]; + SELECTHANDLESET exceptResults; + HANDLE aExceptResults[MAXIMUM_SELECT_OBJECTS]; /* Data following are dedicated to APC like call, they will be initialized if required. */ @@ -190,7 +182,12 @@ static LPSELECTDATA select_data_new (LPSELECTDATA lpSelectData, caml_win32_list_init((LPLIST)res); caml_win32_list_next_set((LPLIST)res, (LPLIST)lpSelectData); res->EType = EType; - res->nResultsCount = 0; + handle_set_init(&res->readResults, res->aReadResults, + MAXIMUM_SELECT_OBJECTS); + handle_set_init(&res->writeResults, res->aWriteResults, + MAXIMUM_SELECT_OBJECTS); + handle_set_init(&res->exceptResults, res->aExceptResults, + MAXIMUM_SELECT_OBJECTS); /* Data following are dedicated to APC like call, they @@ -218,38 +215,36 @@ static void select_data_free (LPSELECTDATA lpSelectData) lpSelectData->lpWorker = NULL; }; - /* Make sure results/queries cannot be accessed */ - lpSelectData->nResultsCount = 0; + /* Make sure queries cannot be accessed */ lpSelectData->nQueriesCount = 0; caml_stat_free(lpSelectData); } -/* Add a result to select data, return zero if something goes wrong. */ -static DWORD select_data_result_add (LPSELECTDATA lpSelectData, - SELECTMODE EMode, int lpOrigIdx) +/* Add a result to select data. */ +static void select_data_result_add (LPSELECTDATA lpSelectData, + SELECTMODE EMode, HANDLE hFileDescr) { - DWORD res; - DWORD i; - - res = 0; - if (lpSelectData->nResultsCount < MAXIMUM_SELECT_OBJECTS * 3) + switch (EMode) { - i = lpSelectData->nResultsCount; - lpSelectData->aResults[i].EMode = EMode; - lpSelectData->aResults[i].lpOrigIdx = lpOrigIdx; - lpSelectData->nResultsCount++; - res = 1; + case SELECT_MODE_READ: + handle_set_add(&lpSelectData->readResults, hFileDescr); + break; + case SELECT_MODE_WRITE: + handle_set_add(&lpSelectData->writeResults, hFileDescr); + break; + case SELECT_MODE_EXCEPT: + handle_set_add(&lpSelectData->exceptResults, hFileDescr); + break; + case SELECT_MODE_NONE: + CAMLunreachable(); } - - return res; } /* Add a query to select data, return zero if something goes wrong */ static DWORD select_data_query_add (LPSELECTDATA lpSelectData, SELECTMODE EMode, HANDLE hFileDescr, - int lpOrigIdx, unsigned int uFlagsFd) { DWORD res; @@ -261,7 +256,6 @@ static DWORD select_data_query_add (LPSELECTDATA lpSelectData, i = lpSelectData->nQueriesCount; lpSelectData->aQueries[i].EMode = EMode; lpSelectData->aQueries[i].hFileDescr = hFileDescr; - lpSelectData->aQueries[i].lpOrigIdx = lpOrigIdx; lpSelectData->aQueries[i].uFlagsFd = uFlagsFd; lpSelectData->nQueriesCount++; res = 1; @@ -349,7 +343,8 @@ static void read_console_poll(HANDLE hStop, void *_data) record.Event.KeyEvent.bKeyDown && record.Event.KeyEvent.uChar.AsciiChar != 0) { - select_data_result_add(lpSelectData, lpQuery->EMode, lpQuery->lpOrigIdx); + select_data_result_add(lpSelectData, lpQuery->EMode, + lpQuery->hFileDescr); lpSelectData->EState = SELECT_STATE_SIGNALED; break; } @@ -370,14 +365,13 @@ static void read_console_poll(HANDLE hStop, void *_data) static LPSELECTDATA read_console_poll_add (LPSELECTDATA lpSelectData, SELECTMODE EMode, HANDLE hFileDescr, - int lpOrigIdx, unsigned int uFlagsFd) { LPSELECTDATA res; res = select_data_new(lpSelectData, SELECT_TYPE_CONSOLE_READ); res->funcWorker = read_console_poll; - select_data_query_add(res, SELECT_MODE_READ, hFileDescr, lpOrigIdx, uFlagsFd); + select_data_query_add(res, SELECT_MODE_READ, hFileDescr, uFlagsFd); return res; } @@ -426,7 +420,7 @@ static void read_pipe_poll (HANDLE hStop, void *_data) { lpSelectData->EState = SELECT_STATE_SIGNALED; select_data_result_add(lpSelectData, iterQuery->EMode, - iterQuery->lpOrigIdx); + iterQuery->hFileDescr); }; }; @@ -460,7 +454,6 @@ static void read_pipe_poll (HANDLE hStop, void *_data) static LPSELECTDATA read_pipe_poll_add (LPSELECTDATA lpSelectData, SELECTMODE EMode, HANDLE hFileDescr, - int lpOrigIdx, unsigned int uFlagsFd) { LPSELECTDATA res; @@ -476,7 +469,7 @@ static LPSELECTDATA read_pipe_poll_add (LPSELECTDATA lpSelectData, /* Add a new pipe to poll */ res->funcWorker = read_pipe_poll; - select_data_query_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + select_data_query_add(res, EMode, hFileDescr, uFlagsFd); return hd; } @@ -563,20 +556,20 @@ static void socket_poll (HANDLE hStop, void *_data) != 0) { select_data_result_add(lpSelectData, SELECT_MODE_READ, - iterQuery->lpOrigIdx); + iterQuery->hFileDescr); } if ((iterQuery->EMode & SELECT_MODE_WRITE) != 0 && (events.lNetworkEvents & (FD_WRITE | FD_CONNECT | FD_CLOSE)) != 0) { select_data_result_add(lpSelectData, SELECT_MODE_WRITE, - iterQuery->lpOrigIdx); + iterQuery->hFileDescr); } if ((iterQuery->EMode & SELECT_MODE_EXCEPT) != 0 && (events.lNetworkEvents & FD_OOB) != 0) { select_data_result_add(lpSelectData, SELECT_MODE_EXCEPT, - iterQuery->lpOrigIdx); + iterQuery->hFileDescr); } } } @@ -607,7 +600,6 @@ static void socket_poll (HANDLE hStop, void *_data) static LPSELECTDATA socket_poll_add (LPSELECTDATA lpSelectData, SELECTMODE EMode, HANDLE hFileDescr, - int lpOrigIdx, unsigned int uFlagsFd) { LPSELECTDATA res; @@ -685,7 +677,6 @@ static LPSELECTDATA socket_poll_add (LPSELECTDATA lpSelectData, } aQueries->EMode = EMode; aQueries->hFileDescr = hFileDescr; - aQueries->lpOrigIdx = lpOrigIdx; aQueries->uFlagsFd = uFlagsFd; DEBUG_PRINT("Socket %x added", hFileDescr); } @@ -706,7 +697,6 @@ static LPSELECTDATA socket_poll_add (LPSELECTDATA lpSelectData, static LPSELECTDATA static_poll_add (LPSELECTDATA lpSelectData, SELECTMODE EMode, HANDLE hFileDescr, - int lpOrigIdx, unsigned int uFlagsFd) { LPSELECTDATA res; @@ -717,8 +707,8 @@ static LPSELECTDATA static_poll_add (LPSELECTDATA lpSelectData, res = select_data_job_search(&hd, SELECT_TYPE_STATIC); /* Add a new query/result */ - select_data_query_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); - select_data_result_add(res, EMode, lpOrigIdx); + select_data_query_add(res, EMode, hFileDescr, uFlagsFd); + select_data_result_add(res, EMode, hFileDescr); return hd; } @@ -774,7 +764,7 @@ static SELECTHANDLETYPE get_handle_type(value fd) /* Choose what to do with given data */ static LPSELECTDATA select_data_dispatch (LPSELECTDATA lpSelectData, SELECTMODE EMode, - value fd, int lpOrigIdx) + value fd) { LPSELECTDATA res; HANDLE hFileDescr; @@ -806,7 +796,7 @@ static LPSELECTDATA select_data_dispatch (LPSELECTDATA lpSelectData, /* Disk is always ready in read/write operation */ if (EMode == SELECT_MODE_READ || EMode == SELECT_MODE_WRITE) { - res = static_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = static_poll_add(res, EMode, hFileDescr, uFlagsFd); }; break; @@ -815,12 +805,11 @@ static LPSELECTDATA select_data_dispatch (LPSELECTDATA lpSelectData, /* Console is always ready in write operation, need to check for read. */ if (EMode == SELECT_MODE_READ) { - res = read_console_poll_add(res, EMode, hFileDescr, lpOrigIdx, - uFlagsFd); + res = read_console_poll_add(res, EMode, hFileDescr, uFlagsFd); } else if (EMode == SELECT_MODE_WRITE) { - res = static_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = static_poll_add(res, EMode, hFileDescr, uFlagsFd); }; break; @@ -830,13 +819,13 @@ static LPSELECTDATA select_data_dispatch (LPSELECTDATA lpSelectData, if (EMode == SELECT_MODE_READ) { DEBUG_PRINT("Need to check availability of data on pipe"); - res = read_pipe_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = read_pipe_poll_add(res, EMode, hFileDescr, uFlagsFd); } else if (EMode == SELECT_MODE_WRITE) { DEBUG_PRINT("No need to check availability of data on pipe, " "write operation always possible"); - res = static_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = static_poll_add(res, EMode, hFileDescr, uFlagsFd); }; break; @@ -850,14 +839,14 @@ static LPSELECTDATA select_data_dispatch (LPSELECTDATA lpSelectData, DEBUG_PRINT("Socket is not connected"); if (EMode == SELECT_MODE_WRITE || EMode == SELECT_MODE_READ) { - res = static_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = static_poll_add(res, EMode, hFileDescr, uFlagsFd); alreadyAdded = TRUE; } } } if (!alreadyAdded) { - res = socket_poll_add(res, EMode, hFileDescr, lpOrigIdx, uFlagsFd); + res = socket_poll_add(res, EMode, hFileDescr, uFlagsFd); } break; @@ -886,38 +875,58 @@ static DWORD caml_list_length (value lst) CAMLreturnT(DWORD, res); } -static value find_handle(LPSELECTRESULT iterResult, value readfds, - value writefds, value exceptfds) +static LPSELECTHANDLESET select_data_results(LPSELECTDATA lpSelectData, + SELECTMODE EMode) { - CAMLparam3(readfds, writefds, exceptfds); - CAMLlocal2(result, list); - - switch( iterResult->EMode ) + switch (EMode) { case SELECT_MODE_READ: - list = readfds; - break; + return &lpSelectData->readResults; case SELECT_MODE_WRITE: - list = writefds; - break; + return &lpSelectData->writeResults; case SELECT_MODE_EXCEPT: - list = exceptfds; - break; + return &lpSelectData->exceptResults; case SELECT_MODE_NONE: CAMLunreachable(); - }; + } + return NULL; /* Avoid warning C4715 with MSVC. */ +} - for(int i=0; list != Val_unit && i < iterResult->lpOrigIdx; ++i ) +static BOOL select_data_result_mem(LPSELECTDATA lpSelectData, + SELECTMODE EMode, HANDLE hFileDescr) +{ + for (; lpSelectData != NULL; + lpSelectData = LIST_NEXT(LPSELECTDATA, lpSelectData)) { - list = Field(list, 1); + if (handle_set_mem(select_data_results(lpSelectData, EMode), hFileDescr)) + return TRUE; } + return FALSE; +} - if (list == Val_unit) - caml_failwith ("select.c: original file handle not found"); +/* Filter an original descriptor list using the results. Iterating over the + original list both returns the exact OCaml values supplied by the caller + and preserves duplicate descriptors, as the fd_set implementation does. */ +static value select_data_to_fdlist(value fdlist, LPSELECTDATA lpSelectData, + SELECTMODE EMode) +{ + CAMLparam1(fdlist); + CAMLlocal2(res, fd); - result = Field(list, 0); + res = Val_emptylist; + for (; fdlist != Val_emptylist; fdlist = Field(fdlist, 1)) + { + fd = Field(fdlist, 0); + if (select_data_result_mem(lpSelectData, EMode, Handle_val(fd))) + { + value newres = caml_alloc_small(2, Tag_cons); + Field(newres, 0) = fd; + Field(newres, 1) = res; + res = newres; + } + } - CAMLreturn( result ); + CAMLreturn(res); } #define MAX(a, b) ((a) > (b) ? (a) : (b)) @@ -977,12 +986,6 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, LPSELECTDATA lpSelectData; LPSELECTDATA iterSelectData; - /* Iterator for results */ - LPSELECTRESULT iterResult; - - /* Iterator */ - DWORD i; - /* Error status */ DWORD err; @@ -1056,7 +1059,6 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, lpEventsDone = NULL; lpSelectData = NULL; iterSelectData = NULL; - iterResult = NULL; hasStaticData = 0; readfds_len = caml_list_length(readfds); writefds_len = caml_list_length(writefds); @@ -1081,7 +1083,6 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, to watch */ DEBUG_PRINT("Dispatch read fd"); handle_set_init(&hds, hdsData, hdsMax); - i=0; for (l = readfds; l != Val_emptylist; l = Field(l, 1)) { fd = Field(l, 0); @@ -1089,7 +1090,7 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, { handle_set_add(&hds, Handle_val(fd)); lpSelectData = select_data_dispatch(lpSelectData, - SELECT_MODE_READ, fd, i++); + SELECT_MODE_READ, fd); } else { @@ -1101,7 +1102,6 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, DEBUG_PRINT("Dispatch write fd"); handle_set_init(&hds, hdsData, hdsMax); - i=0; for (l = writefds; l != Val_emptylist; l = Field(l, 1)) { fd = Field(l, 0); @@ -1109,7 +1109,7 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, { handle_set_add(&hds, Handle_val(fd)); lpSelectData = select_data_dispatch(lpSelectData, - SELECT_MODE_WRITE, fd, i++); + SELECT_MODE_WRITE, fd); } else { @@ -1121,7 +1121,6 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, DEBUG_PRINT("Dispatch exceptional fd"); handle_set_init(&hds, hdsData, hdsMax); - i=0; for (l = exceptfds; l != Val_emptylist; l = Field(l, 1)) { fd = Field(l, 0); @@ -1129,7 +1128,7 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, { handle_set_add(&hds, Handle_val(fd)); lpSelectData = select_data_dispatch(lpSelectData, - SELECT_MODE_EXCEPT, fd, i++); + SELECT_MODE_EXCEPT, fd); } else { @@ -1237,38 +1236,9 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, /* Build results */ if (err == 0) { - DEBUG_PRINT("Building result"); - read_list = Val_emptylist; - write_list = Val_emptylist; - except_list = Val_emptylist; - iterSelectData = lpSelectData; while (iterSelectData != NULL) { - for (i = 0; i < iterSelectData->nResultsCount; i++) - { - iterResult = &(iterSelectData->aResults[i]); - l = caml_alloc_small(2, Tag_cons); - Field(l, 0) = find_handle(iterResult, readfds, writefds, - exceptfds); - switch (iterResult->EMode) - { - case SELECT_MODE_READ: - Field(l, 1) = read_list; - read_list = l; - break; - case SELECT_MODE_WRITE: - Field(l, 1) = write_list; - write_list = l; - break; - case SELECT_MODE_EXCEPT: - Field(l, 1) = except_list; - except_list = l; - break; - case SELECT_MODE_NONE: - CAMLunreachable(); - } - } /* We try to only process the first error, bypass other errors */ if (err == 0 && iterSelectData->EState == SELECT_STATE_ERROR) { @@ -1276,6 +1246,17 @@ CAMLprim value caml_unix_select(value readfds, value writefds, value exceptfds, } iterSelectData = LIST_NEXT(LPSELECTDATA, iterSelectData); } + + if (err == 0) + { + DEBUG_PRINT("Building result"); + read_list = select_data_to_fdlist(readfds, lpSelectData, + SELECT_MODE_READ); + write_list = select_data_to_fdlist(writefds, lpSelectData, + SELECT_MODE_WRITE); + except_list = select_data_to_fdlist(exceptfds, lpSelectData, + SELECT_MODE_EXCEPT); + } } /* Free resources */ diff --git a/otherlibs/unix/socketaddr.c b/otherlibs/unix/socketaddr.c index 535cbc6bec1b..46d5e2f725e0 100644 --- a/otherlibs/unix/socketaddr.c +++ b/otherlibs/unix/socketaddr.c @@ -89,8 +89,9 @@ void caml_unix_get_sockaddr(value vaddr, s_inet6->sin6_len = sizeof(struct sockaddr_in6); #endif *addr_len = sizeof(struct sockaddr_in6); - } else { + } else #endif + { struct sockaddr_in *s_inet = (struct sockaddr_in *) addr; memset(s_inet, 0, sizeof(struct sockaddr_in)); s_inet->sin_family = AF_INET; diff --git a/otherlibs/unix/unix_win32.ml b/otherlibs/unix/unix_win32.ml index ee4b6cd37ca9..7dec48f043c1 100644 --- a/otherlibs/unix/unix_win32.ml +++ b/otherlibs/unix/unix_win32.ml @@ -385,10 +385,11 @@ external link : ?follow:bool -> string -> string -> unit = "caml_unix_link" external realpath : string -> string = "caml_unix_realpath" let realpath p = - let cleanup p = (* Remove any \\?\ prefix. *) - if String.starts_with ~prefix:{|\\?\|} p - then (String.sub p 4 (String.length p - 4)) - else p + let cleanup p = (* cf. `caml_locate_standard_library` in runtime/win32.c *) + assert (String.sub p 0 4 = {|\\?\|}); + if String.starts_with ~prefix:{|\\?\UNC\|} p + then "\\" ^ String.sub p 7 (String.length p - 7) + else String.sub p 4 (String.length p - 4) in try cleanup (realpath p) with | (Unix_error (EACCES, _, _)) as e -> diff --git a/otherlibs/unix/write_unix.c b/otherlibs/unix/write_unix.c index 172ffd051b0d..de9a9181ffd0 100644 --- a/otherlibs/unix/write_unix.c +++ b/otherlibs/unix/write_unix.c @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -66,6 +67,7 @@ CAMLprim value caml_unix_write_bigarray(value vfd, value vbuf, ofs = Long_val(vofs); len = Long_val(vlen); int fd = Int_val(vfd); + bool single = Bool_val(vsingle); written = 0; caml_enter_blocking_section(); while (len > 0) { @@ -78,7 +80,7 @@ CAMLprim value caml_unix_write_bigarray(value vfd, value vbuf, written += ret; ofs += ret; len -= ret; - if (Bool_val(vsingle)) break; + if (single) break; } caml_leave_blocking_section(); CAMLreturn(Val_long(written)); diff --git a/parsing/ast_helper.ml b/parsing/ast_helper.ml index 77e63fc9858d..2683e6ebd867 100644 --- a/parsing/ast_helper.ml +++ b/parsing/ast_helper.ml @@ -232,6 +232,7 @@ module Exp = struct let extension ?loc ?attrs a = mk ?loc ?attrs (Pexp_extension a) let unreachable ?loc ?attrs () = mk ?loc ?attrs Pexp_unreachable let struct_item ?loc ?attrs si e = mk ?loc ?attrs (Pexp_struct_item (si, e)) + let hole ?loc ?attrs () = mk ?loc ?attrs Pexp_hole let case lhs ?guard rhs = { @@ -277,6 +278,7 @@ module Mod = struct let constraint_ ?loc ?attrs m mty = mk ?loc ?attrs (Pmod_constraint (m, mty)) let unpack ?loc ?attrs e = mk ?loc ?attrs (Pmod_unpack e) let extension ?loc ?attrs a = mk ?loc ?attrs (Pmod_extension a) + let hole ?loc ?attrs () = mk ?loc ?attrs Pmod_hole end module Sig = struct diff --git a/parsing/ast_helper.mli b/parsing/ast_helper.mli index 3fcc62619f29..4ee4f346711b 100644 --- a/parsing/ast_helper.mli +++ b/parsing/ast_helper.mli @@ -198,6 +198,7 @@ module Exp: val unreachable: ?loc:loc -> ?attrs:attrs -> unit -> expression val struct_item: ?loc:loc -> ?attrs:attrs -> structure_item -> expression -> expression + val hole: ?loc:loc -> ?attrs:attrs -> unit -> expression val case: pattern -> ?guard:expression -> expression -> case val binding_op: str -> pattern -> expression -> loc -> binding_op @@ -294,6 +295,7 @@ module Mod: module_expr val unpack: ?loc:loc -> ?attrs:attrs -> expression -> module_expr val extension: ?loc:loc -> ?attrs:attrs -> extension -> module_expr + val hole: ?loc:loc -> ?attrs:attrs -> unit -> module_expr end (** Signature items *) diff --git a/parsing/ast_iterator.ml b/parsing/ast_iterator.ml index 2506ac2ccd52..1654d52ebd2f 100644 --- a/parsing/ast_iterator.ml +++ b/parsing/ast_iterator.ml @@ -365,6 +365,7 @@ module M = struct sub.module_expr sub m; sub.module_type sub mty | Pmod_unpack e -> sub.expr sub e | Pmod_extension x -> sub.extension sub x + | Pmod_hole -> () let iter_structure_item sub {pstr_loc = loc; pstr_desc = desc} = sub.location sub loc; @@ -489,6 +490,7 @@ module E = struct | Pexp_unreachable -> () | Pexp_struct_item (si, e) -> sub.structure_item sub si; sub.expr sub e + | Pexp_hole -> () let iter_binding_op sub {pbop_op; pbop_pat; pbop_exp; pbop_loc} = iter_loc iter_string sub pbop_op; diff --git a/parsing/ast_mapper.ml b/parsing/ast_mapper.ml index c1d1ff2f9579..ef13e2593012 100644 --- a/parsing/ast_mapper.ml +++ b/parsing/ast_mapper.ml @@ -416,6 +416,7 @@ module M = struct (sub.module_type sub mty) | Pmod_unpack e -> unpack ~loc ~attrs (sub.expr sub e) | Pmod_extension x -> extension ~loc ~attrs (sub.extension sub x) + | Pmod_hole -> hole ~loc ~attrs () let map_structure_item sub {pstr_loc = loc; pstr_desc = desc} = let open Str in @@ -552,6 +553,7 @@ module E = struct | Pexp_unreachable -> unreachable ~loc ~attrs () | Pexp_struct_item (si, e) -> struct_item ~loc ~attrs (sub.structure_item sub si) (sub.expr sub e) + | Pexp_hole -> hole ~loc ~attrs () let map_binding_op sub {pbop_op; pbop_pat; pbop_exp; pbop_loc} = let open Exp in diff --git a/parsing/depend.ml b/parsing/depend.ml index 4569a4597f02..5bbab446145d 100644 --- a/parsing/depend.ml +++ b/parsing/depend.ml @@ -270,6 +270,7 @@ let rec add_expr bv exp = | Pexp_struct_item (si, e) -> let bv, _ = add_struct_item (bv, String.Map.empty) si in add_expr bv e + | Pexp_hole -> () and add_function_param bv param = match param.pparam_desc with @@ -487,6 +488,7 @@ and add_module_expr bv modl = add_expr bv e | Pmod_extension e -> handle_extension e + | Pmod_hole -> () and add_class_type bv cty = match cty.pcty_desc with diff --git a/parsing/parser.mly b/parsing/parser.mly index d8ce1b07007a..7d82895231d0 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -928,6 +928,7 @@ The precedences must be listed from low to high. %left BAR /* pattern (p|p|p) */ %nonassoc below_COMMA %left COMMA /* expr/labeled_tuple (e,e,e) */ +%nonassoc below_MINUSGREATER %right MINUSGREATER /* function_type (t -> t -> t) */ %right OR BARBAR /* expr (e || e || e) */ %right AMPERSAND AMPERAMPER /* expr (e && e && e) */ @@ -954,6 +955,7 @@ The precedences must be listed from low to high. NEW PREFIXOP STRING TRUE UIDENT LBRACKETPERCENT QUOTED_STRING_EXPR METAOCAML_BRACKET_OPEN METAOCAML_ESCAPE + UNDERSCORE /* Entry points */ @@ -1468,6 +1470,9 @@ module_expr: | (* An extension. *) ex = extension { Pmod_extension ex } + | (* A hole. *) + UNDERSCORE + { Pmod_hole } ) { $1 } ; @@ -2484,10 +2489,6 @@ fun_expr: { mk_indexop_expr user_indexing_operators ~loc:$sloc $1 } | fun_expr attribute { Exp.attr $1 $2 } -/* BEGIN AVOID */ - | UNDERSCORE - { not_expecting $loc($1) "wildcard \"_\"" } -/* END AVOID */ ; %inline expr: | or_function(fun_expr) { $1 } @@ -2693,6 +2694,8 @@ simple_expr: | mod_longident DOT LPAREN MODULE ext_attributes module_expr COLON error { unclosed "(" $loc($3) ")" $loc($8) } + | UNDERSCORE + { Pexp_hole } ; labeled_simple_expr: simple_expr %prec below_HASH @@ -2702,12 +2705,16 @@ labeled_simple_expr: | TILDE label = LIDENT { let loc = $loc(label) in (Labelled label, mkexpvar ~loc label) } + | TILDE UNDERSCORE + { (Labelled "_", mkexp ~loc:$loc($2) Pexp_hole) } | TILDE LPAREN label = LIDENT ty = type_constraint RPAREN { (Labelled label, mkexp_constraint ~loc:($startpos($2), $endpos) (mkexpvar ~loc:$loc(label) label) ty) } | QUESTION label = LIDENT { let loc = $loc(label) in (Optional label, mkexpvar ~loc label) } + | QUESTION UNDERSCORE + { (Optional "_", mkexp ~loc:$loc($2) Pexp_hole) } | OPTLABEL simple_expr %prec below_HASH { (Optional $1, $2) } ; @@ -3649,8 +3656,10 @@ with_constraint: | MODULE mkrhs(mod_longident) COLONEQUAL mkrhs(mod_ext_longident) { Pwith_modsubst ($2, $4) } | MODULE TYPE l=mkrhs(mty_longident) EQUAL rhs=module_type + %prec below_MINUSGREATER { Pwith_modtype (l, rhs) } | MODULE TYPE l=mkrhs(mty_longident) COLONEQUAL rhs=module_type + %prec below_MINUSGREATER { Pwith_modtypesubst (l, rhs) } ; with_type_binder: diff --git a/parsing/parsetree.mli b/parsing/parsetree.mli index cb42a94cd5c2..478535e9f00b 100644 --- a/parsing/parsetree.mli +++ b/parsing/parsetree.mli @@ -440,6 +440,13 @@ and expression_desc = - [let* P0 = E00 and* P1 = E01 in E1] *) | Pexp_extension of extension (** [[%id]] *) | Pexp_unreachable (** [.] *) + | Pexp_hole + (** [_], a "hole". + + Holes are recognized by the parser anywhere a simple + expression is allowed, but they are unconditionally + rejected by the type-checker: they are intended to be + eliminated by a ppx rewriter before type-checking. *) and case = { @@ -1074,6 +1081,13 @@ and module_expr_desc = | Pmod_constraint of module_expr * module_type (** [(ME : MT)] *) | Pmod_unpack of expression (** [(val E)] *) | Pmod_extension of extension (** [[%id]] *) + | Pmod_hole + (** [_], a "hole". + + Holes are recognized by the parser anywhere a module + expression is allowed, but they are unconditionally + rejected by the type-checker: they are intended to be + eliminated by a ppx rewriter before type-checking. *) and structure = structure_item list diff --git a/parsing/pprintast.ml b/parsing/pprintast.ml index fc79d284e065..2863486394a4 100644 --- a/parsing/pprintast.ml +++ b/parsing/pprintast.ml @@ -1022,6 +1022,7 @@ and simple_expr ctxt f x = (* |`Normal -> longident_loc f li *) (* | `Prefix _ | `Infix _ -> pp f "( %a )" longident_loc li) *) | Pexp_constant c -> constant f c; + | Pexp_hole -> pp f "_" | Pexp_pack (me, opty) -> pp f "(module@;%a" (module_expr ctxt) me; Option.iter (pp f " :@ %a" (package_type ctxt)) opty; @@ -1496,6 +1497,7 @@ and module_expr ctxt f x = | Pmod_unpack e -> pp f "(val@ %a)" (expression ctxt) e | Pmod_extension e -> extension ctxt f e + | Pmod_hole -> pp f "_" and structure ctxt f x = list ~sep:"@\n" (structure_item ctxt) f x diff --git a/parsing/printast.ml b/parsing/printast.ml index 9a89e2459187..51dcefaa9536 100644 --- a/parsing/printast.ml +++ b/parsing/printast.ml @@ -398,11 +398,13 @@ and expression i ppf x = line i ppf "Pexp_extension \"%s\"\n" s.txt; payload i ppf arg | Pexp_unreachable -> - line i ppf "Pexp_unreachable" + line i ppf "Pexp_unreachable\n" | Pexp_struct_item (si, e) -> line i ppf "Pexp_struct_item\n"; structure_item i ppf si; expression i ppf e + | Pexp_hole -> + line i ppf "Pexp_hole\n" and function_param i ppf { pparam_desc = desc; pparam_loc = loc } = match desc with @@ -872,6 +874,8 @@ and module_expr i ppf x = | Pmod_extension (s, arg) -> line i ppf "Pmod_extension \"%s\"\n" s.txt; payload i ppf arg + | Pmod_hole -> + line i ppf "Pmod_hole\n" and structure i ppf x = list i structure_item ppf x diff --git a/parsing/unit_info.ml b/parsing/unit_info.ml index d66fd3eff162..6e5dbbd05a1f 100644 --- a/parsing/unit_info.ml +++ b/parsing/unit_info.ml @@ -41,11 +41,11 @@ let basename_chop_extensions basename = | exception Not_found -> basename let strict_modulize s = - match Misc.Utf8_lexeme.capitalize s with + match Utf8_lexeme.capitalize s with | Ok x -> x | Error _ -> raise (Error (Invalid_encoding s)) -let modulize s = match Misc.Utf8_lexeme.capitalize s with Ok x | Error x -> x +let modulize s = match Utf8_lexeme.capitalize s with Ok x | Error x -> x (* We re-export the [Misc] definition, and ignore encoding errors under the assumption that we should focus our effort on not *producing* badly encoded @@ -63,7 +63,7 @@ let lax_modname_from_source source_file = source_file |> stem |> modulize (* Check validity of module name *) -let is_unit_name name = Misc.Utf8_lexeme.is_valid_identifier name +let is_unit_name name = Utf8_lexeme.is_valid_identifier name let check_unit_name file = if not (is_unit_name (modname file)) then diff --git a/runtime/caml/io.h b/runtime/caml/io.h index 8c0e001801fe..e928765ec300 100644 --- a/runtime/caml/io.h +++ b/runtime/caml/io.h @@ -25,7 +25,7 @@ #include "mlvalues.h" #include "platform.h" -#if defined(_WIN32) +#if defined(_MSC_VER) typedef int64_t file_offset; #else #include diff --git a/runtime/caml/memory.h b/runtime/caml/memory.h index f6457f5d8d25..540ee008ba0e 100644 --- a/runtime/caml/memory.h +++ b/runtime/caml/memory.h @@ -96,6 +96,15 @@ CAMLextern caml_stat_block caml_stat_alloc(asize_t); CAMLmalloc(caml_stat_free, 1, 1) CAMLextern caml_stat_block caml_stat_alloc_noexc(asize_t); +/* [caml_stat_calloc(num, size)] allocates a block of memory for an array + of [num] elements, each of them [size] bytes long, and initializes all its + bits to zero, effectively allocating a zero-initialized memory block of + [num * size] bytes. It throws an OCaml exception in case + the request fails, and so requires the runtime lock to be held. +*/ +CAMLcalloc(caml_stat_free, 1, 1, 2) +CAMLextern caml_stat_block caml_stat_calloc(asize_t, asize_t); + /* [caml_stat_calloc_noexc(num, size)] allocates a block of memory for an array of [num] elements, each of them [size] bytes long, and initializes all its bits to zero, effectively allocating a zero-initialized memory block of diff --git a/runtime/caml/mlvalues.h b/runtime/caml/mlvalues.h index 923b0598fdff..1c0c72959893 100644 --- a/runtime/caml/mlvalues.h +++ b/runtime/caml/mlvalues.h @@ -101,6 +101,7 @@ typedef struct caml_result_private caml_result; change in the future. Its public interface is formed of - Result_value, Result_exception - caml_result_is_exception + - caml_result_find_exception - caml_get_value_or_raise (in fail.h) */ struct caml_result_private { @@ -118,6 +119,12 @@ Caml_inline int caml_result_is_exception(struct caml_result_private result) return result.is_exception; } +Caml_inline value *caml_result_find_exception( + struct caml_result_private *result) +{ + return (result->is_exception ? &result->data : NULL); +} + #define Result_unit Result_value(Val_unit) diff --git a/runtime/caml/runtime_events.h b/runtime/caml/runtime_events.h index a230171eaaae..f004bb938d50 100644 --- a/runtime/caml/runtime_events.h +++ b/runtime/caml/runtime_events.h @@ -122,6 +122,7 @@ typedef enum { EV_COMPACT_RELEASE, EV_EMPTY_MINOR, EV_MINOR_EPHE_CLEAN, + EV_EXPLICIT_GC_RAMP_UP, } ev_runtime_phase; typedef enum { @@ -157,8 +158,11 @@ typedef enum { EV_C_MAJOR_SLICE_BUDGET, EV_C_MINOR_ALLOCATED_WORDS, - EV_C_MINOR_PROMOTED_WORDS + EV_C_MINOR_PROMOTED_WORDS, + EV_C_MAJOR_DIRECT_ALLOCATED_WORDS, + EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS, + EV_C_MAJOR_RESUMED_ALLOCATED_WORDS } ev_runtime_counter; typedef enum { diff --git a/runtime/caml/stack.h b/runtime/caml/stack.h index 169acc1e364a..251445edddb1 100644 --- a/runtime/caml/stack.h +++ b/runtime/caml/stack.h @@ -45,11 +45,26 @@ #ifdef TARGET_power /* Size of the gc_regs structure, in words. See power.S and power/proc.ml for the indices */ -#define Wosize_gc_regs (23 /* int regs */ + 14 /* caller-save float regs */) +#ifdef WITH_FRAME_POINTERS +#define Wosize_gc_regs \ + (22 /* int regs, r23 is ALLOC_PTR */ + 14 /* caller-save float regs */) +#else +#define Wosize_gc_regs \ + (23 /* int regs, r23 is ALLOC_PTR, r31 allocatable */ \ + + 14 /* caller-save float regs */) +#endif #define Saved_return_address_raw(sp) *((intnat *)((sp) + 16)) #define First_frame(sp) (sp) +/* Stack header layout: RESERVED_STACK (32) + TRAP_SIZE + gc_regs (16). + TRAP_SIZE matches the value used in power.S and emit.mlp: + 48 with frame pointers, 16 otherwise. */ +#ifdef WITH_FRAME_POINTERS +#define Saved_gc_regs(sp) (*(value **)((sp) + 32 + 48 + 8)) +#define Stack_header_size (32 + 48 + 16) +#else #define Saved_gc_regs(sp) (*(value **)((sp) + 32 + 16 + 8)) #define Stack_header_size (32 + 16 + 16) +#endif #define CODE_POINTER_MARK_BIT 0 #endif diff --git a/runtime/compare.c b/runtime/compare.c index 1ec7dd344ec5..f4f30c5d323f 100644 --- a/runtime/compare.c +++ b/runtime/compare.c @@ -107,9 +107,10 @@ static void run_pending_actions(struct compare_stack* stk, Begin_roots_block(roots_start, roots_length); result = caml_do_pending_actions_res(); End_roots(); - if (caml_result_is_exception(result)) { + value *exn = caml_result_find_exception(&result); + if (exn) { compare_free_stack(stk); - (void) caml_get_value_or_raise(result);; + caml_raise(*exn); } } diff --git a/runtime/domain.c b/runtime/domain.c index 482c06de923b..f9bd37b1aa2f 100644 --- a/runtime/domain.c +++ b/runtime/domain.c @@ -190,7 +190,6 @@ struct dom_internal { struct interruptor interruptor; /* backup thread */ - caml_plat_thread backup_thread; atomic_uintnat backup_thread_msg; caml_plat_mutex domain_lock; caml_plat_cond domain_cond; @@ -203,6 +202,7 @@ struct dom_internal { typedef struct dom_internal dom_internal; static CAMLthread_local dom_internal* domain_self; +static CAMLthread_local bool is_backup_thread; static struct { /* enter barrier for STW sections, participating domains arrive into @@ -1167,6 +1167,7 @@ backup_thread_func(void* v) domain_self = di; caml_state = di->state; + is_backup_thread = true; msg = atomic_load_acquire (&di->backup_thread_msg); while (msg != BT_TERMINATE) { @@ -1221,6 +1222,7 @@ backup_thread_func(void* v) static value install_backup_thread_exn (dom_internal* di) { int err; + caml_plat_thread backup_thread; #ifndef _WIN32 sigset_t mask, old_mask; #endif @@ -1243,7 +1245,7 @@ static value install_backup_thread_exn (dom_internal* di) #endif atomic_store_release(&di->backup_thread_msg, BT_ENTERING_OCAML); - err = caml_plat_thread_create(&di->backup_thread, backup_thread_func, + err = caml_plat_thread_create(&backup_thread, backup_thread_func, (void*)di); #ifndef _WIN32 @@ -1252,7 +1254,7 @@ static value install_backup_thread_exn (dom_internal* di) if (err != 0) return caml_check_error_exn(err, "failed to create domain backup thread"); - caml_plat_thread_detach(di->backup_thread); + caml_plat_thread_detach(backup_thread); return Val_unit; } @@ -2176,8 +2178,7 @@ CAMLexport int caml_bt_is_in_blocking_section(void) CAMLexport int caml_bt_is_self(void) { - return caml_plat_thread_equal(domain_self->backup_thread, - caml_plat_thread_self()); + return is_backup_thread; } CAMLexport intnat caml_domain_is_multicore (void) diff --git a/runtime/fiber.c b/runtime/fiber.c index 140112f13d39..adf34be7b5dc 100644 --- a/runtime/fiber.c +++ b/runtime/fiber.c @@ -479,6 +479,61 @@ void caml_rewrite_exception_stack(struct stack_info *old_stack, #endif +#ifdef WITH_FRAME_POINTERS + +/* One link of the frame-pointer chain. */ +struct stack_frame { + struct stack_frame* prev; + void* retaddr; +}; + +/* Relocate by [delta] the frame pointers of the OCaml frames lying above the + C frame described by [link], for as long as they point inside [old_stack]. + The OCaml frames have already been copied to the new stack, [link->sp] has + not been relocated yet. */ +Caml_inline void relocate_frame_pointers(struct c_stack_link* link, + struct stack_info* old_stack, + ptrdiff_t delta) +{ +#if defined(TARGET_power) + /* On Power the c_stack_link sits above the ABI's 32-byte reserved area, so + the OCaml frame record is not adjacent to it. Reach it through + [link->sp], which is the address of the innermost OCaml frame record, + relocated by [delta] since the stack has already been copied. */ + struct stack_frame* fp = (struct stack_frame*)((char*)link->sp + delta); +#elif defined(TARGET_riscv) + /* On RISC-V, the frame pointer s0 = CFA = sp + frame_size, pointing to the + address just AFTER the {saved_s0, saved_ra} frame record. So fp->prev + gives a CFA value, and the actual frame record is at + (CFA - sizeof(struct stack_frame)). ENTER_FUNCTION sets s0 = sp + 16, + so the saved s0 in the C function's frame equals link->sp + 16. */ + struct stack_frame* fp = ((struct stack_frame*)link) - 1; + CAMLassert(fp->prev == (struct stack_frame*)((char*)link->sp + 16)); +#else /* AMD64 and ARM64 */ + /* The frame pointer is pushed just below the c_stack_link. This is + somewhat tricky to guarantee when there are stack arguments to C calls: + see caml_c_call_copy_stack_args */ + struct stack_frame* fp = ((struct stack_frame*)link) - 1; + CAMLassert(fp->prev == (struct stack_frame*)link->sp); +#endif + +#if defined(TARGET_riscv) + while ((value*)fp->prev > Stack_base(old_stack) && + (value*)fp->prev <= Stack_high(old_stack)) { + fp->prev = (struct stack_frame*)((char*)fp->prev + delta); + fp = fp->prev - 1; /* CFA - 16 = frame record */ + } +#else + while (Stack_base(old_stack) <= (value*)fp->prev && + (value*)fp->prev < Stack_high(old_stack)) { + fp->prev = (struct stack_frame*)((char*)fp->prev + delta); + fp = fp->prev; + } +#endif +} + +#endif /* WITH_FRAME_POINTERS */ + int caml_try_realloc_stack(asize_t required_space) { struct stack_info *old_stack, *new_stack; @@ -525,51 +580,15 @@ int caml_try_realloc_stack(asize_t required_space) * multiple c_stack_links to point to the same stack since callbacks are run * on existing stacks. */ { + ptrdiff_t delta = + (char*)Stack_high(new_stack) - (char*)Stack_high(old_stack); + for (struct c_stack_link *link = Caml_state->c_stack; link != NULL; link = link->prev) { if (link->stack == old_stack) { - ptrdiff_t delta = - (char*)Stack_high(new_stack) - (char*)Stack_high(old_stack); #ifdef WITH_FRAME_POINTERS - struct stack_frame { - struct stack_frame* prev; - void* retaddr; - }; - - /* Frame pointer is pushed just below the c_stack_link. - This is somewhat tricky to guarantee when there are stack - arguments to C calls: see caml_c_call_copy_stack_args */ - struct stack_frame* fp = ((struct stack_frame*)link) - 1; - -#if defined(TARGET_riscv) - /* On RISC-V, the frame pointer s0 = CFA = sp + frame_size, - pointing to the address just AFTER the {saved_s0, saved_ra} - frame record. So fp->prev gives a CFA value, and the - actual frame record is at (CFA - sizeof(struct stack_frame)). - ENTER_FUNCTION sets s0 = sp + 16, so the saved s0 in the - C function's frame equals link->sp + 16. */ - CAMLassert(fp->prev == - (struct stack_frame*)((char*)link->sp + 16)); - - /* Rewrite OCaml frame pointers above this C frame. - fp->prev is a CFA; the frame record is at CFA - 1 (in - struct stack_frame units, i.e. CFA - 16 bytes). */ - while ((value*)fp->prev > Stack_base(old_stack) && - (value*)fp->prev <= Stack_high(old_stack)) { - fp->prev = (struct stack_frame*)((char*)fp->prev + delta); - fp = fp->prev - 1; /* CFA - 16 = frame record */ - } -#else - CAMLassert(fp->prev == (struct stack_frame*)link->sp); - - /* Rewrite OCaml frame pointers above this C frame */ - while (Stack_base(old_stack) <= (value*)fp->prev && - (value*)fp->prev < Stack_high(old_stack)) { - fp->prev = (struct stack_frame*)((char*)fp->prev + delta); - fp = fp->prev; - } -#endif + relocate_frame_pointers(link, old_stack, delta); #endif link->stack = new_stack; link->sp = (char*)link->sp + delta; diff --git a/runtime/floats.c b/runtime/floats.c index 9ccd05fbe983..82232fb4cccc 100644 --- a/runtime/floats.c +++ b/runtime/floats.c @@ -105,7 +105,7 @@ CAMLexport void caml_Store_double_val(value val, double dbl) third-party code loaded into process does. */ -#if defined(_WIN32) +#if defined(_WIN32) || defined(__HAIKU__) #define With_C_locale(stmt) \ char* saved_locale = setlocale(LC_NUMERIC, NULL); \ setlocale(LC_NUMERIC, "C"); \ diff --git a/runtime/gc_ctrl.c b/runtime/gc_ctrl.c index b5f666d72cbd..d0730cfc67f8 100644 --- a/runtime/gc_ctrl.c +++ b/runtime/gc_ctrl.c @@ -465,6 +465,7 @@ caml_result caml_gc_ramp_up(value callback, uintnat *out_suspended_words) { outer phase. */ CAML_GC_MESSAGE(SLICESIZE, "Entering a GC ramp-up phase.\n"); + CAML_EV_BEGIN(EV_EXPLICIT_GC_RAMP_UP); intnat ramp_up_already = (Caml_state->gc_policy & CAML_GC_RAMP_UP); if (!ramp_up_already) @@ -491,6 +492,8 @@ caml_result caml_gc_ramp_up(value callback, uintnat *out_suspended_words) { if (!ramp_up_already) Caml_state->gc_policy = (Caml_state->gc_policy & ~CAML_GC_RAMP_UP); + CAML_EV_END(EV_EXPLICIT_GC_RAMP_UP); + return res; } diff --git a/runtime/intern.c b/runtime/intern.c index b767152a6669..568f69cfc818 100644 --- a/runtime/intern.c +++ b/runtime/intern.c @@ -843,6 +843,7 @@ struct marshal_header { int header_len; uintnat data_len; uintnat uncompressed_data_len; + uintnat total_len; /* header_len + data_len */ uintnat num_objects; uintnat whsize; int compressed; @@ -902,6 +903,10 @@ static void caml_parse_header(struct caml_intern_state* s, default: intern_failwith2(fun_name, "bad object"); } + if (caml_uadd_overflow(h->header_len, h->data_len, &h->total_len)) { + intern_failwith2 + (fun_name, "object too large to be read back on this platform"); + } } /* Decompress the input if needed. @@ -1035,7 +1040,8 @@ CAMLexport value caml_input_val_from_bytes(value str, intnat ofs) /* Initialize global state */ intern_init(s, &Byte_u(str, ofs), caml_string_length(str) - ofs, NULL); caml_parse_header(s, "input_val_from_string", &h); - if (ofs + h.header_len + h.data_len > caml_string_length(str)) + if (ofs < 0 || ofs + h.total_len < h.total_len || + ofs + h.total_len > caml_string_length(str)) caml_failwith("input_val_from_string: bad length"); /* Allocate result */ intern_alloc_storage(s, h.whsize, h.num_objects); @@ -1077,7 +1083,7 @@ static value caml_input_value_from_buffer(const char * fun_name, intern_init(s, src, len, input); caml_parse_header(s, fun_name, &h); - if (h.header_len + h.data_len > len) + if (h.total_len > len) intern_failwith2(fun_name, "bad length"); s->intern_src_end = s->intern_src + h.data_len; return input_val_from_block(s, &h); @@ -1117,7 +1123,7 @@ CAMLprim value caml_marshal_data_size(value buff, value ofs) { uint32_t magic; int header_len; - uintnat data_len; + uintnat data_len, total_len; struct caml_intern_state *s = init_intern_state (); s->intern_src = &Byte_u(buff, Long_val(ofs)); @@ -1147,7 +1153,12 @@ CAMLprim value caml_marshal_data_size(value buff, value ofs) default: caml_failwith("Marshal.data_size: bad object"); } - return Val_long((header_len - 16) + data_len); + if (caml_uadd_overflow(header_len, data_len, &total_len) + || total_len > Max_long + 20) { + caml_failwith("Marshal.data_size: " + "object too large to be read back on this platform"); + } + return Val_long(total_len - 16); } /* Resolution of code pointers */ diff --git a/runtime/io.c b/runtime/io.c index 3330c4e386c1..86df979fb778 100644 --- a/runtime/io.c +++ b/runtime/io.c @@ -28,7 +28,7 @@ #include #endif #ifdef __CYGWIN__ -#include +#include #endif #include "caml/alloc.h" #include "caml/camlatomic.h" @@ -52,8 +52,10 @@ #if defined(_WIN32) #include +#if defined(_MSC_VER) #define lseek _lseeki64 #endif +#endif /* Representation of channel status and direction: diff --git a/runtime/major_gc.c b/runtime/major_gc.c index e173f1ddd4ec..4d4939f82721 100644 --- a/runtime/major_gc.c +++ b/runtime/major_gc.c @@ -1176,7 +1176,11 @@ update_major_slice_work(intnat howmuch, if (log_events) { CAML_EV_COUNTER(EV_C_MAJOR_HEAP_WORDS, (uintnat)heap_words); CAML_EV_COUNTER(EV_C_MAJOR_ALLOCATED_WORDS, my_alloc_count); - /* TODO: add counters for direct, suspended, resumed allocs. */ + CAML_EV_COUNTER(EV_C_MAJOR_DIRECT_ALLOCATED_WORDS, my_alloc_direct_count); + CAML_EV_COUNTER(EV_C_MAJOR_SUSPENDED_ALLOCATED_WORDS, + my_alloc_suspended_count); + CAML_EV_COUNTER(EV_C_MAJOR_RESUMED_ALLOCATED_WORDS, + my_alloc_resumed_count); CAML_EV_COUNTER(EV_C_MAJOR_ALLOCATED_WORK, alloc_work); CAML_EV_COUNTER(EV_C_MAJOR_DEPENDENT_WORK, dependent_work); CAML_EV_COUNTER(EV_C_MAJOR_EXTRA_WORK, extra_work); diff --git a/runtime/memory.c b/runtime/memory.c index e7c66b1ea0ff..f2bb33f0e7ac 100644 --- a/runtime/memory.c +++ b/runtime/memory.c @@ -174,8 +174,8 @@ atomic_store_release(p, v); where `p` is the field's adress. The release store ensures that - initialising writes into `p` to other domains. To see why, consider - the OCaml program: + initialising writes into `p` are visible to other domains. To see + why, consider the OCaml program: let r : int ref ref = ref (ref 0) @@ -238,10 +238,10 @@ on v, and either this program prints 0 or it prints 42. The reasoning makes use of address dependencies, which are not part - of the C11 memory model. However, in practice they do create - happens-before ordering in practice. This is the case, for example, - in the Linux Kernel Memory Model (LKMM). In the C11 model, two things - are missing: + of the C11 memory model. However, in practice, relaxed loads do + create happens-before ordering in practice. This is the case, for + example, in the Linux Kernel Memory Model (LKMM). In the C11 model, + two things are missing: - C11 considers that only an acquire load that reads from a release store can establish a hb relation. The LKMM relaxes this by @@ -790,6 +790,16 @@ CAMLexport caml_stat_block caml_stat_calloc_noexc(asize_t num, asize_t sz) } } +/* [sz] is a number of bytes */ +CAMLexport caml_stat_block caml_stat_calloc(asize_t num, asize_t sz) +{ + void *result = caml_stat_calloc_noexc(num, sz); + /* calloc() may return NULL if size is 0 or number of elements is 0 */ + if ((result == NULL) && (sz != 0) && (num != 0)) + caml_raise_out_of_memory(); + return result; +} + CAMLexport caml_stat_string caml_stat_strdup_noexc(const char *s) { size_t slen = strlen(s); diff --git a/runtime/minor_gc.c b/runtime/minor_gc.c index 6a6820f26f36..688da0be0e81 100644 --- a/runtime/minor_gc.c +++ b/runtime/minor_gc.c @@ -730,7 +730,7 @@ caml_empty_minor_heap_promote(caml_domain_state* domain, CAML_EV_COUNTER(EV_C_MINOR_ALLOCATED, minor_allocated_bytes); CAML_EV_COUNTER(EV_C_MINOR_ALLOCATED_WORDS, - Whsize_wosize(minor_allocated_bytes)); + Wsize_bsize(minor_allocated_bytes)); CAML_EV_END(EV_MINOR); if (minor_allocated_bytes == 0) diff --git a/runtime/power.S b/runtime/power.S index fa14e099fd78..49e183780f2f 100644 --- a/runtime/power.S +++ b/runtime/power.S @@ -35,14 +35,32 @@ #define C_CALL_TMP 28 #define TRAP_PTR 29 #define DOMAIN_STATE_PTR 30 -#define ALLOC_PTR 31 +#define ALLOC_PTR 23 +#define FRAME_PTR 31 + +/* gc_regs bucket: integer reg at index i is stored at offset i*8 (matching + proc.ml), then the caller-save floats. Without frame pointers r31 is an + extra allocatable integer register, so there is one more integer slot. */ +#ifdef WITH_FRAME_POINTERS +#define NUM_INT_GC_REGS 22 +#else +#define NUM_INT_GC_REGS 23 +#endif +#define GC_FLOAT_OFS(n) ((NUM_INT_GC_REGS + (n)) * 8) /* Stack layout */ #define RESERVED_STACK 32 #define LR_SAVE 16 #define TOC_SAVE_PARENT 8 #define TOC_SAVE 24 +/* Trap frame size, must match emit.mlp's [trap_size]. + With frame pointers we need >= RESERVED_STACK + 16. Otherwise 16 + suffices. */ +#ifdef WITH_FRAME_POINTERS +#define TRAP_SIZE 48 +#else #define TRAP_SIZE 16 +#endif #define TRAP_HANDLER_OFFSET 8 #define TRAP_PREVIOUS_OFFSET 0 #define CALLBACK_LINK_SIZE 32 @@ -78,6 +96,7 @@ */ #define DW_REG_sp 1 +#define DW_REG_lr 65 /* Function definitions */ @@ -134,7 +153,7 @@ caml_hot__code_end: /* Save return address in caller's frame. */ mflr 0 std 0, LR_SAVE(SP) - CFI_OFFSET(65, LR_SAVE) /* LR (DWARF reg 65) saved at CFA + 16 */ + CFI_OFFSET(DW_REG_lr, LR_SAVE) /* LR saved at CFA + LR_SAVE */ .endm .macro LEAVE_FUNCTION @@ -143,6 +162,38 @@ caml_hot__code_end: mtlr 0 .endm +/* UPDATE_BASE_POINTER: update the fiber's back chain (bottom of the fiber + stack, a fixed -(16 + TRAP_SIZE + RESERVED_STACK) from the stack_handler) + to point at the current frame, so frame-pointer walking traverses a resumed + fiber. Must not touch fiber_bottom+16: that holds f's return address, so the + walker legitimately shows caml_runstack as the intermediate frame. */ +#ifdef WITH_FRAME_POINTERS +.macro UPDATE_BASE_POINTER handler_reg + /* ENTER_FUNCTION first: a frame's return address is read at + back_chain + LR_SAVE, so the frame pointed at needs a valid one. */ + ENTER_FUNCTION + std SP, -(16 + TRAP_SIZE + RESERVED_STACK)(\handler_reg) +.endm +#else +.macro UPDATE_BASE_POINTER handler_reg +.endm +#endif + +/* INIT_LR_SAVE: store \target in this frame's LR save area, obtaining its + address with a bl to the next instruction. */ +#ifdef WITH_FRAME_POINTERS +.macro INIT_LR_SAVE target, here + bl \here +\here: + mflr TMP + addi TMP, TMP, (\target - \here + 4) + std TMP, LR_SAVE(SP) +.endm +#else +.macro INIT_LR_SAVE target, here +.endm +#endif + /* Accessing global variables. */ #define LSYMB(glob) .L##glob @@ -191,7 +242,7 @@ caml_hot__code_end: LR was saved at OCaml_SP + 16 before the switch, so LR is at CFA + 16 */ .cfi_escape DW_CFA_def_cfa_expression, 3, \ DW_OP_breg + DW_REG_sp, Cstack_sp_offset, DW_OP_deref - CFI_OFFSET(65, LR_SAVE) /* LR at CFA + LR_SAVE */ + CFI_OFFSET(DW_REG_lr, LR_SAVE) /* LR saved at CFA + LR_SAVE */ /* Tell the debugger that the interrupted SP value equals CFA. This is needed for proper unwinding through the signal frame. */ .cfi_escape DW_CFA_val_expression, DW_REG_sp, 1, DW_OP_call_frame_cfa @@ -217,7 +268,8 @@ caml_hot__code_end: ld TMP, Caml_state(gc_regs_buckets) ld 0, 0(TMP) std 0, Caml_state(gc_regs_buckets) - /* Save all allocatable integer registers */ + /* Save all allocatable integer registers + (r23 is ALLOC_PTR, not saved here) */ std 3, 0x000(TMP) std 4, 0x008(TMP) std 5, 0x010(TMP) @@ -235,28 +287,31 @@ caml_hot__code_end: std 20, 0x070(TMP) std 21, 0x078(TMP) std 22, 0x080(TMP) - std 23, 0x088(TMP) - std 24, 0x090(TMP) - std 25, 0x098(TMP) - std 26, 0x0A0(TMP) - std 27, 0x0A8(TMP) - std 28, 0x0B0(TMP) + std 24, 0x088(TMP) + std 25, 0x090(TMP) + std 26, 0x098(TMP) + std 27, 0x0A0(TMP) + std 28, 0x0A8(TMP) +#ifndef WITH_FRAME_POINTERS + /* r31 is an allocatable register (frame pointers off): save it too */ + std 31, 0x0B0(TMP) +#endif /* Save caller-save floating-point registers */ /* (callee-saves are preserved by C functions) */ - stfd 0, 0x0B8(TMP) - stfd 1, 0x0C0(TMP) - stfd 2, 0x0C8(TMP) - stfd 3, 0x0D0(TMP) - stfd 4, 0x0D8(TMP) - stfd 5, 0x0E0(TMP) - stfd 6, 0x0E8(TMP) - stfd 7, 0x0F0(TMP) - stfd 8, 0x0F8(TMP) - stfd 9, 0x100(TMP) - stfd 10, 0x108(TMP) - stfd 11, 0x110(TMP) - stfd 12, 0x118(TMP) - stfd 13, 0x120(TMP) + stfd 0, GC_FLOAT_OFS(0)(TMP) + stfd 1, GC_FLOAT_OFS(1)(TMP) + stfd 2, GC_FLOAT_OFS(2)(TMP) + stfd 3, GC_FLOAT_OFS(3)(TMP) + stfd 4, GC_FLOAT_OFS(4)(TMP) + stfd 5, GC_FLOAT_OFS(5)(TMP) + stfd 6, GC_FLOAT_OFS(6)(TMP) + stfd 7, GC_FLOAT_OFS(7)(TMP) + stfd 8, GC_FLOAT_OFS(8)(TMP) + stfd 9, GC_FLOAT_OFS(9)(TMP) + stfd 10, GC_FLOAT_OFS(10)(TMP) + stfd 11, GC_FLOAT_OFS(11)(TMP) + stfd 12, GC_FLOAT_OFS(12)(TMP) + stfd 13, GC_FLOAT_OFS(13)(TMP) /* Save bucket to gc_regs */ std TMP, Caml_state(gc_regs) .endm @@ -265,7 +320,8 @@ caml_hot__code_end: and refresh ALLOC_PTR and TRAP_PTR from Caml_state */ .macro RESTORE_ALL_REGS ld TMP, Caml_state(gc_regs) - /* Restore all allocatable integer registers */ + /* Restore all allocatable integer registers + (r23 is ALLOC_PTR, not restored here) */ ld 3, 0x000(TMP) ld 4, 0x008(TMP) ld 5, 0x010(TMP) @@ -283,28 +339,31 @@ caml_hot__code_end: ld 20, 0x070(TMP) ld 21, 0x078(TMP) ld 22, 0x080(TMP) - ld 23, 0x088(TMP) - ld 24, 0x090(TMP) - ld 25, 0x098(TMP) - ld 26, 0x0A0(TMP) - ld 27, 0x0A8(TMP) - ld 28, 0x0B0(TMP) + ld 24, 0x088(TMP) + ld 25, 0x090(TMP) + ld 26, 0x098(TMP) + ld 27, 0x0A0(TMP) + ld 28, 0x0A8(TMP) +#ifndef WITH_FRAME_POINTERS + /* r31 is an allocatable register (frame pointers off): restore it too */ + ld 31, 0x0B0(TMP) +#endif /* Restore caller-save floating-point registers (callee-saves are preserved by C functions) */ - lfd 0, 0x0B8(TMP) - lfd 1, 0x0C0(TMP) - lfd 2, 0x0C8(TMP) - lfd 3, 0x0D0(TMP) - lfd 4, 0x0D8(TMP) - lfd 5, 0x0E0(TMP) - lfd 6, 0x0E8(TMP) - lfd 7, 0x0F0(TMP) - lfd 8, 0x0F8(TMP) - lfd 9, 0x100(TMP) - lfd 10, 0x108(TMP) - lfd 11, 0x110(TMP) - lfd 12, 0x118(TMP) - lfd 13, 0x120(TMP) + lfd 0, GC_FLOAT_OFS(0)(TMP) + lfd 1, GC_FLOAT_OFS(1)(TMP) + lfd 2, GC_FLOAT_OFS(2)(TMP) + lfd 3, GC_FLOAT_OFS(3)(TMP) + lfd 4, GC_FLOAT_OFS(4)(TMP) + lfd 5, GC_FLOAT_OFS(5)(TMP) + lfd 6, GC_FLOAT_OFS(6)(TMP) + lfd 7, GC_FLOAT_OFS(7)(TMP) + lfd 8, GC_FLOAT_OFS(8)(TMP) + lfd 9, GC_FLOAT_OFS(9)(TMP) + lfd 10, GC_FLOAT_OFS(10)(TMP) + lfd 11, GC_FLOAT_OFS(11)(TMP) + lfd 12, GC_FLOAT_OFS(12)(TMP) + lfd 13, GC_FLOAT_OFS(13)(TMP) /* Put gc_regs struct back in bucket linked list */ ld TMP2, Caml_state(gc_regs_buckets) std TMP2, 0(TMP) /* next ptr */ @@ -358,20 +417,20 @@ caml_hot__code_end: std 9, 0x030(TMP) std 10, 0x038(TMP) /* Save caller-save floating-point registers */ - stfd 0, 0x0B8(TMP) - stfd 1, 0x0C0(TMP) - stfd 2, 0x0C8(TMP) - stfd 3, 0x0D0(TMP) - stfd 4, 0x0D8(TMP) - stfd 5, 0x0E0(TMP) - stfd 6, 0x0E8(TMP) - stfd 7, 0x0F0(TMP) - stfd 8, 0x0F8(TMP) - stfd 9, 0x100(TMP) - stfd 10, 0x108(TMP) - stfd 11, 0x110(TMP) - stfd 12, 0x118(TMP) - stfd 13, 0x120(TMP) + stfd 0, GC_FLOAT_OFS(0)(TMP) + stfd 1, GC_FLOAT_OFS(1)(TMP) + stfd 2, GC_FLOAT_OFS(2)(TMP) + stfd 3, GC_FLOAT_OFS(3)(TMP) + stfd 4, GC_FLOAT_OFS(4)(TMP) + stfd 5, GC_FLOAT_OFS(5)(TMP) + stfd 6, GC_FLOAT_OFS(6)(TMP) + stfd 7, GC_FLOAT_OFS(7)(TMP) + stfd 8, GC_FLOAT_OFS(8)(TMP) + stfd 9, GC_FLOAT_OFS(9)(TMP) + stfd 10, GC_FLOAT_OFS(10)(TMP) + stfd 11, GC_FLOAT_OFS(11)(TMP) + stfd 12, GC_FLOAT_OFS(12)(TMP) + stfd 13, GC_FLOAT_OFS(13)(TMP) /* Save bucket to gc_regs */ std TMP, Caml_state(gc_regs) .endm @@ -390,20 +449,20 @@ caml_hot__code_end: ld 9, 0x030(TMP) ld 10, 0x038(TMP) /* Restore caller-save floating-point registers */ - lfd 0, 0x0B8(TMP) - lfd 1, 0x0C0(TMP) - lfd 2, 0x0C8(TMP) - lfd 3, 0x0D0(TMP) - lfd 4, 0x0D8(TMP) - lfd 5, 0x0E0(TMP) - lfd 6, 0x0E8(TMP) - lfd 7, 0x0F0(TMP) - lfd 8, 0x0F8(TMP) - lfd 9, 0x100(TMP) - lfd 10, 0x108(TMP) - lfd 11, 0x110(TMP) - lfd 12, 0x118(TMP) - lfd 13, 0x120(TMP) + lfd 0, GC_FLOAT_OFS(0)(TMP) + lfd 1, GC_FLOAT_OFS(1)(TMP) + lfd 2, GC_FLOAT_OFS(2)(TMP) + lfd 3, GC_FLOAT_OFS(3)(TMP) + lfd 4, GC_FLOAT_OFS(4)(TMP) + lfd 5, GC_FLOAT_OFS(5)(TMP) + lfd 6, GC_FLOAT_OFS(6)(TMP) + lfd 7, GC_FLOAT_OFS(7)(TMP) + lfd 8, GC_FLOAT_OFS(8)(TMP) + lfd 9, GC_FLOAT_OFS(9)(TMP) + lfd 10, GC_FLOAT_OFS(10)(TMP) + lfd 11, GC_FLOAT_OFS(11)(TMP) + lfd 12, GC_FLOAT_OFS(12)(TMP) + lfd 13, GC_FLOAT_OFS(13)(TMP) /* Put gc_regs struct back in bucket linked list */ ld TMP2, Caml_state(gc_regs_buckets) std TMP2, 0(TMP) /* next ptr */ @@ -509,8 +568,27 @@ FUNCTION caml_c_call /* Save return address in caller's frame AND in a callee-save register */ mflr C_CALL_RET_ADDR std C_CALL_RET_ADDR, LR_SAVE(SP) +#ifdef WITH_FRAME_POINTERS + /* Save OCaml SP for frame pointer linking. + Must use C_CALL_TMP (callee-saved r28) because SWITCH_OCAML_TO_C + clobbers TMP. */ + mr C_CALL_TMP, SP /* Switch from OCaml to C */ SWITCH_OCAML_TO_C + /* Create a frame whose back chain points to OCaml stack. + This allows frame pointer walking to cross from C to OCaml, + similar to ARM64's ENTER_FUNCTION. */ + stdu C_CALL_TMP, -RESERVED_STACK(SP) +#ifdef ASM_CFI_SUPPORTED + /* After stdu, SP moved away from c_stack_link. The back chain at SP+0 + contains OCaml_SP (from C_CALL_TMP). Update CFI to read CFA from there. */ + .cfi_escape DW_CFA_def_cfa_expression, 3, \ + DW_OP_breg + DW_REG_sp, 0, DW_OP_deref +#endif +#else + /* Switch from OCaml to C (no extra frame needed without frame pointers) */ + SWITCH_OCAML_TO_C +#endif /* Make the exception handler and alloc ptr available to the C code */ std ALLOC_PTR, Caml_state(young_ptr) std TRAP_PTR, Caml_state(exn_handler) @@ -520,6 +598,16 @@ FUNCTION caml_c_call mr C_CALL_TOC, 2 /* save current TOC in a callee-save register */ bctrl mr 2, C_CALL_TOC /* restore current TOC */ +#ifdef WITH_FRAME_POINTERS + /* Pop the frame we created */ + addi SP, SP, RESERVED_STACK +#ifdef ASM_CFI_SUPPORTED + /* After popping, SP points to c_stack_link again. Restore CFI to read + CFA from Cstack_sp (offset 40), matching SWITCH_OCAML_TO_C output. */ + .cfi_escape DW_CFA_def_cfa_expression, 3, \ + DW_OP_breg + DW_REG_sp, Cstack_sp_offset, DW_OP_deref +#endif +#endif /* Restore return address (in register C_CALL_RET_ADDR, preserved by C) */ mtlr C_CALL_RET_ADDR /* Reload new allocation pointer and exception pointer */ @@ -547,11 +635,29 @@ FUNCTION caml_c_call_stack_args CFI_STARTPROC CFI_SIGNAL_FRAME /* Extra arguments to be passed on stack: - STACK_ARG_BYTES at offsets 32 to 32 + STACK_ARG_BYTES from SP */ - mr C_CALL_TMP, SP - /* Save return address in caller's frame AND in a callee-save register */ + STACK_ARG_BYTES at offsets 32 to 32 + STACK_ARG_BYTES from SP. + C_CALL_TOC (r26, callee-saved) holds the OCaml SP from which the + arguments are copied below. */ + mr C_CALL_TOC, SP +#ifdef WITH_FRAME_POINTERS + /* Power does not need caml_c_call_copy_stack_args (used by the register-FP + arches, see ocaml/ocaml#13635): stack reallocation locates OCaml frame + pointers via c_stack_link->sp and the in-memory back chain (see + caml_try_realloc_stack in fiber.c), so it never walks the C-stack region + where these arguments are pushed. */ + /* SP is a parameter frame whose back chain points to the actual function + frame. Skip the parameter frame so the frame walker does not see it + twice. */ + ld C_CALL_TMP, 0(SP) /* actual function frame */ +#endif + /* Save return address in a callee-save register */ mflr C_CALL_RET_ADDR +#ifdef WITH_FRAME_POINTERS + /* Saved into the OCaml caller's frame after the copy loop instead, where + it cannot be clobbered by the last argument slot. */ +#else std C_CALL_RET_ADDR, LR_SAVE(SP) +#endif /* Switch from OCaml to C */ SWITCH_OCAML_TO_C /* Make the exception handler and alloc ptr available to the C code */ @@ -559,14 +665,33 @@ FUNCTION caml_c_call_stack_args std TRAP_PTR, Caml_state(exn_handler) /* Reserve STACK_ARG_BYTES bytes on the C stack */ subfc SP, STACK_ARG_BYTES, SP - /* Copy from OCaml SP + [32...32+STACK_ARG_BYTES) +#ifdef WITH_FRAME_POINTERS + /* Set up back chain pointing to actual OCaml function frame + (not param frame). + This allows frame pointer walking to cross from C to OCaml correctly. */ + std C_CALL_TMP, 0(SP) +#ifdef ASM_CFI_SUPPORTED + /* After subfc + std, SP moved away from c_stack_link. The back chain at SP+0 + contains OCaml_SP (from C_CALL_TMP). Update CFI to read CFA from there. */ + .cfi_escape DW_CFA_def_cfa_expression, 3, \ + DW_OP_breg + DW_REG_sp, 0, DW_OP_deref +#endif +#endif + /* Copy from OCaml SP (in C_CALL_TOC) + [32...32+STACK_ARG_BYTES) to C SP + [32...32+STACK_ARG_BYTES) */ addi TMP, STACK_ARG_BYTES, 32 - 8 -1: ldx 0, C_CALL_TMP, TMP +1: ldx 0, C_CALL_TOC, TMP stdx 0, SP, TMP addi TMP, TMP, -8 cmpdi TMP, 32 bge 1b +#ifdef WITH_FRAME_POINTERS + /* Save return address in OCaml caller's frame for frame pointer walking. + Must be AFTER the copy loop because main_SP + 16 + (= param_SP + stack_ofs + 16) + can overlap with the last argument slot in the parameter frame. */ + std C_CALL_RET_ADDR, LR_SAVE(C_CALL_TMP) +#endif /* Call C function (address in C_CALL_FUN) */ mtctr C_CALL_FUN mr 12, C_CALL_FUN @@ -575,6 +700,16 @@ FUNCTION caml_c_call_stack_args mr 2, C_CALL_TOC /* restore current TOC */ /* Pop the extra stack space used */ add SP, SP, STACK_ARG_BYTES +#ifdef WITH_FRAME_POINTERS +#ifdef ASM_CFI_SUPPORTED + /* Undo the CFA override above (SP is back at the c_stack_link, so restore + the CFA = *(SP + Cstack_sp_offset) rule set by SWITCH_OCAML_TO_C). + Only needed with frame pointers. Without them that rule was never + changed. */ + .cfi_escape DW_CFA_def_cfa_expression, 3, \ + DW_OP_breg + DW_REG_sp, Cstack_sp_offset, DW_OP_deref +#endif +#endif /* Restore return address (in register C_CALL_RET_ADDR, preserved by C) */ mtlr C_CALL_RET_ADDR /* Reload new allocation pointer and exception pointer */ @@ -733,7 +868,7 @@ FUNCTION caml_start_program /* Save return address and TOC pointer into caller's frame */ mflr 0 std 0, (STACKSIZE + LR_SAVE)(SP) - CFI_OFFSET(65, LR_SAVE) /* LR saved at CFA + LR_SAVE */ + CFI_OFFSET(DW_REG_lr, LR_SAVE) /* LR saved at CFA + LR_SAVE */ std 2, (STACKSIZE + TOC_SAVE_PARENT)(SP) /* Save all callee-save registers */ addi TMP, SP, CALLBACK_LINK_SIZE + RESERVED_STACK - 8 @@ -773,6 +908,15 @@ FUNCTION caml_start_program stfdu 29, 8(TMP) stfdu 30, 8(TMP) stfdu 31, 8(TMP) +#ifdef ASM_CFI_SUPPORTED +#ifdef WITH_FRAME_POINTERS + /* CFI for r31 (frame pointer). r31 is saved at SP + 200. + CFA = SP + STACKSIZE = SP + 352, so r31 is at CFA - 152. + This is needed for unwinding through C frames compiled with + frame pointers. */ + CFI_OFFSET(FRAME_PTR, -152) +#endif +#endif /* Load domain state pointer from argument */ mr DOMAIN_STATE_PTR, START_PRG_DOMAIN_STATE_PTR /* Reload allocation pointer */ @@ -787,8 +931,11 @@ FUNCTION caml_start_program /* Store the gc_regs for callbacks during a GC */ ld 0, Caml_state(gc_regs) stdu 0, -8(TMP) - /* Store the C stack pointer for DWARF unwinding */ - stdu SP, -8(TMP) + /* Store the C caller's stack pointer for frame pointer walking. + We need caller's SP (before caml_start_program's frame), not our SP. + Our frame is STACKSIZE bytes, so caller's SP = SP + STACKSIZE. */ + addi 0, SP, STACKSIZE + stdu 0, -8(TMP) /* Setup a trap frame to catch exceptions escaping the OCaml code */ addi TMP, TMP, -TRAP_SIZE ld 0, Caml_state(exn_handler) @@ -798,31 +945,37 @@ FUNCTION caml_start_program mr TRAP_PTR, TMP /* Switch stacks, reserving 32 bytes at the bottom of the OCaml stack */ addi SP, TMP, -RESERVED_STACK + /* Set up back chain to link OCaml stack back to C stack. + The C stack SP (caml_start_program's frame) was stored at + SP + RESERVED_STACK + TRAP_SIZE (see stdu SP, -8(TMP) above). + Load it and store as the back chain so frame pointer walking + can continue from OCaml stack to C stack. */ +#ifdef WITH_FRAME_POINTERS + ld 0, (RESERVED_STACK + TRAP_SIZE)(SP) + std 0, 0(SP) + /* r31 must hold the OCaml SP on entry to OCaml code. */ + mr FRAME_PTR, SP +#endif #ifdef ASM_CFI_SUPPORTED CFI_REMEMBER_STATE - /* DWARF expression to compute CFA when on OCaml stack: - SP + RESERVED_STACK + TRAP_SIZE contains the C stack pointer. - CFA = *(SP + 48) + STACKSIZE - STACKSIZE (352) is split into 127+127+98 for ULEB128 encoding. */ - .cfi_escape DW_CFA_def_cfa_expression, 3 + 2 + 2 + 2, \ - DW_OP_breg + DW_REG_sp, RESERVED_STACK + TRAP_SIZE, DW_OP_deref, \ - DW_OP_plus_uconst, 127, \ - DW_OP_plus_uconst, 127, \ - DW_OP_plus_uconst, 98 - CFI_OFFSET(65, LR_SAVE) /* LR at CFA + LR_SAVE */ + /* CFA = *(SP + RESERVED_STACK + TRAP_SIZE), where the C caller's SP + was stored before entering OCaml. The offset goes in a ULEB128 + (plus_uconst) rather than breg's SLEB128, which with frame pointers + would be 80 and so would need two bytes. */ + .cfi_escape DW_CFA_def_cfa_expression, 5, \ + DW_OP_breg + DW_REG_sp, 0, \ + DW_OP_plus_uconst, (RESERVED_STACK + TRAP_SIZE), \ + DW_OP_deref + CFI_OFFSET(DW_REG_lr, LR_SAVE) /* LR saved at CFA + LR_SAVE */ #endif /* Call the OCaml code (address in START_PRG_ARG) */ mtctr START_PRG_ARG - /* Pre-initialize the LR save area at SP+16 with the return address. - This ensures the unwinder can find LR even if the first OCaml function - doesn't save it (when fun_frame_required = false). The address stored - is .Lcaml_retaddr + 4 (the instruction after bctrl). */ - bl .Linit_lr_save -.Linit_lr_save: - mflr TMP - addi TMP, TMP, (.Lcaml_retaddr - .Linit_lr_save + 4) - std TMP, LR_SAVE(SP) + /* Pre-initialize the LR save area at SP+16 with the return address, so + the runtime's stack walk can find LR even if the first OCaml function + does not save it (when fun_frame_required = false). The address + stored is .Lcaml_retaddr + 4, the instruction after bctrl. */ + INIT_LR_SAVE .Lcaml_retaddr, .Linit_lr_save .Lcaml_retaddr: bctrl @@ -1124,6 +1277,9 @@ FUNCTION caml_reperform ld 7, Handler_parent(TMP) /* r7 := cont_head */ std 5, Handler_parent(TMP) /* parent(cont_tail) := current_stack */ addi 6, 5, 1 /* r6 := Val_ptr(current_stack) */ + /* The handler may have reallocated the fiber stack, so refresh the + back chain at its bottom. */ + UPDATE_BASE_POINTER TMP b .Ldo_perform CFI_ENDPROC ENDFUNCTION caml_reperform @@ -1167,6 +1323,9 @@ FUNCTION caml_resume ld 7, Stack_handler(3) ld 8, Caml_state(current_stack) std 8, Handler_parent(7) + /* Point cont_tail's back chain (r7 = its stack_handler) at this frame, + so a walker passes through the effect handler. */ + UPDATE_BASE_POINTER 7 /* Switch stacks and run code */ SWITCH_OCAML_STACKS 8, 6 mr 3, 5 @@ -1201,15 +1360,26 @@ FUNCTION caml_runstack /* r3: fiber r4: fun r5: arg */ - /* save return address and TOC on old stack */ + /* Save return address and TOC */ ENTER_FUNCTION + /* save old stack pointer and exception handler */ + ld 8, Caml_state(current_stack) /* r8 := old stack */ + /* Stack_sp records caml_runstack's entry frame, where ENTER_FUNCTION + saved LR. LEAVE_FUNCTION recovers it from Stack_sp + 16. The TOC is + saved just above that, so that it survives a reallocation of this + stack: caml_try_realloc_stack copies only [sp, Stack_high). */ + std SP, Stack_sp(8) std 2, TOC_SAVE_PARENT(SP) +#ifdef WITH_FRAME_POINTERS + /* Keep the entry frame for use as fiber_bottom's back chain, then give + caml_runstack a frame of its own so the back chain can be walked. */ + mr 25, SP + stdu SP, -RESERVED_STACK(SP) + CFI_ADJUST(RESERVED_STACK) +#endif addi 3, 3, -1 /* r3 := Ptr_val(r3) */ ld 12, 0(4) /* r12 := code pointer */ mtctr 12 /* CTR := code pointer */ - /* save old stack pointer and exception handler */ - ld 8, Caml_state(current_stack) /* r8 := old stack */ - std SP, Stack_sp(8) std TRAP_PTR, Stack_exception(8) /* Load new stack pointer and set parent */ ld TMP, Stack_handler(3) @@ -1229,6 +1399,28 @@ FUNCTION caml_runstack mr TRAP_PTR, 9 /* Switch to the new stack, after reserving 32 bytes at bottom */ addi SP, 9, -RESERVED_STACK +#ifdef WITH_FRAME_POINTERS + /* Link the fiber's back chain to caml_runstack's frame. */ + std 25, 0(SP) +#endif +#ifdef ASM_CFI_SUPPORTED + CFI_REMEMBER_STATE + .cfi_escape DW_CFA_def_cfa_expression, 5+3, \ + DW_OP_breg + DW_REG_sp, 0, \ + DW_OP_plus_uconst, \ + (RESERVED_STACK + TRAP_SIZE \ + + 8 /* C stack SP for DWARF (unused) */ \ + + 8 /* gc_regs slot (unused) */ \ + + Handler_parent_offset), \ + DW_OP_deref, \ + DW_OP_plus_uconst, Stack_sp_offset, DW_OP_deref + CFI_OFFSET(DW_REG_lr, LR_SAVE) /* LR saved at CFA + LR_SAVE */ +#endif + /* Pre-initialize the LR save area at SP+16 with the return address, so + the runtime's stack walk can find LR even if the first OCaml function + does not save it (when fun_frame_required = false). The address + stored is .Lframe_runstack + 4, the instruction after bctrl. */ + INIT_LR_SAVE .Lframe_runstack, .Linit_runstack_lr /* Call the function on the new stack */ mr 3, 5 /* argument */ .Lframe_runstack: @@ -1245,15 +1437,16 @@ FUNCTION caml_runstack std TMP, Caml_state(current_stack) ld TRAP_PTR, Stack_exception(TMP) std TRAP_PTR, Caml_state(exn_handler) - /* restore saved TOC */ + /* restore saved TOC (Stack_sp is caml_runstack's entry frame) */ ld 27, Stack_sp(TMP) /* saved across C calls */ ld 2, TOC_SAVE_PARENT(27) /* free old stack by switching directly to c_stack; this is a no-alloc call */ ld SP, Caml_state(c_stack) Far_call(caml_free_stack) - /* switch directly to parent stack */ + /* switch directly to parent stack (caml_runstack's frame) */ mr SP, 27 /* OCaml stack */ + CFI_RESTORE_STATE #if defined(WITH_THREAD_SANITIZER) /* Signal to TSan that we exit caml_runstack (no registers to save here) */ SWITCH_OCAML_TO_C diff --git a/runtime/runtime_events.c b/runtime/runtime_events.c index bd3f5b674c63..c3f0faf84f3b 100644 --- a/runtime/runtime_events.c +++ b/runtime/runtime_events.c @@ -88,7 +88,7 @@ typedef enum { EV_RUNTIME, EV_USER } ev_category; /* These store state for the current ring buffers open for writing */ static struct runtime_events_metadata_header *current_metadata = NULL; -static int current_ring_total_size; +static size_t current_ring_total_size; static char_os *runtime_events_path; static char_os *current_ring_loc = NULL; @@ -238,7 +238,7 @@ void caml_runtime_events_destroy(void) { static void runtime_events_create_from_stw_single(void) { /* Don't initialise runtime_events twice */ if (!atomic_load_acquire(&runtime_events_enabled)) { - int ring_headers_length, ring_data_length; + size_t ring_headers_length, ring_data_length; #ifdef _WIN32 DWORD pid = GetCurrentProcessId(); #else @@ -256,13 +256,24 @@ static void runtime_events_create_from_stw_single(void) { T("%ld.events"), pid); } - current_ring_total_size = - RUNTIME_EVENTS_MAX_CUSTOM_EVENTS * + /* Computed in 64 bits: max_domains * ring_size_bytes can exceed the range + of a 32-bit size_t at large OCAMLRUNPARAM e or d settings, so the result + is checked before it is narrowed. */ + uint64_t ring_total_size = + (uint64_t)RUNTIME_EVENTS_MAX_CUSTOM_EVENTS * sizeof(struct runtime_events_custom_event) + - caml_params->max_domains * (ring_size_words * sizeof(uint64_t) + + (uint64_t)caml_params->max_domains * + ((uint64_t)ring_size_words * sizeof(uint64_t) + sizeof(struct runtime_events_buffer_header)) + sizeof(struct runtime_events_metadata_header); + if (ring_total_size > SIZE_MAX) { + caml_fatal_error("Ring buffer of %" PRIu64 " bytes exceeds the address " + "space, reduce OCAMLRUNPARAM e or d", ring_total_size); + } + + current_ring_total_size = (size_t)ring_total_size; + #ifdef _WIN32 ring_file_handle = CreateFile( current_ring_loc, @@ -285,12 +296,13 @@ static void runtime_events_create_from_stw_single(void) { } } + /* Shifting a 32-bit size_t by 32 is undefined, so widen first. */ ring_handle = CreateFileMapping( ring_file_handle, NULL, PAGE_READWRITE, - 0, - current_ring_total_size, + (DWORD)((uint64_t)current_ring_total_size >> 32), + (DWORD)(current_ring_total_size & 0xFFFFFFFF), NULL ); @@ -578,6 +590,7 @@ static void write_to_ring(ev_category category, ev_message_type type, } /* First we check if a write would take us over the head */ + int head_advanced = 0; while ((ring_tail + length_with_header_ts + padding_required) - ring_head >= ring_size_words) { /* The write would over-write some old bit of data. Need to advance the @@ -588,6 +601,17 @@ static void write_to_ring(ev_category category, ev_message_type type, // advance the ring head atomic_store_release(&domain_ring_header->ring_head, ring_head); + head_advanced = 1; + } + + if (head_advanced) { + /* The head advance must become visible before the stores that overwrite + the slots it released. atomic_store_release orders accesses before the + store, not after it, so without this fence a consumer can observe the + overwriting stores while the old ring_head is still visible. It then + reads overwritten data and cannot tell, because the head it re-reads + says the slot was never released. */ + atomic_thread_fence(memory_order_release); } if (padding_required > 0) { diff --git a/runtime/signals.c b/runtime/signals.c index a30be247754d..26cc592a4d51 100644 --- a/runtime/signals.c +++ b/runtime/signals.c @@ -21,6 +21,9 @@ #include #include #include "caml/config.h" +#ifndef _WIN32 +#include +#endif #ifdef USE_MMAP_MAP_STACK #include #endif @@ -545,12 +548,40 @@ CAMLprim value caml_sys_rev_convert_signal_number(value signo) return Val_int(caml_rev_convert_signal_number(Int_val(signo))); } +#ifdef POSIX_SIGNALS +/* On Linux, the minimum signal stack size is architecture-dependent, whereas + * SIGSTKSZ can be a build-time constant and may be smaller than the run-time + * minimum (e.g. on musl with certain Intel CPUs). Thus, we call sysconf for the + * run-time value ourselves. */ +Caml_inline size_t caml_sigstksz(void) +{ + /* Compute the recommended signal stack size only once. Atomic due to benign + * concurrent reads during domain init. */ + static _Atomic size_t cache = 0; + size_t size = atomic_load_relaxed(&cache); + if (size == 0) { + long sz; +#ifdef _SC_SIGSTKSZ + /* glibc/musl only */ + sz = sysconf(_SC_SIGSTKSZ); + if (sz <= 0) + sz = SIGSTKSZ; +#else + sz = SIGSTKSZ; +#endif + size = (size_t) sz; + atomic_store_relaxed(&cache, size); + } + return size; +} +#endif /* POSIX_SIGNALS */ + void * caml_init_signal_stack(void) { #ifdef POSIX_SIGNALS stack_t stk; stk.ss_flags = 0; - stk.ss_size = SIGSTKSZ; + stk.ss_size = caml_sigstksz(); /* The memory used for the alternate signal stack must not free'd before calling sigaltstack with SS_DISABLE. malloc/mmap is therefore used rather than caml_stat_alloc_noexc so that if a shutdown path erroneously fails @@ -563,7 +594,7 @@ void * caml_init_signal_stack(void) if (stk.ss_sp == MAP_FAILED) return NULL; if (sigaltstack(&stk, NULL) < 0) { - munmap(stk.ss_sp, SIGSTKSZ); + munmap(stk.ss_sp, stk.ss_size); return NULL; } #else @@ -587,7 +618,7 @@ void caml_free_signal_stack(void * signal_stack) stack_t stk, disable; disable.ss_flags = SS_DISABLE; disable.ss_sp = NULL; /* not required but avoids a valgrind false alarm */ - disable.ss_size = SIGSTKSZ; /* macOS wants a valid size here */ + disable.ss_size = caml_sigstksz(); /* macOS wants a valid size here */ if (sigaltstack(&disable, &stk) < 0) { caml_fatal_error("Failed to reset signal stack (err %d)", errno); } @@ -599,7 +630,7 @@ void caml_free_signal_stack(void * signal_stack) /* Memory was allocated with malloc/mmap directly (see caml_init_signal_stack) */ #ifdef USE_MMAP_MAP_STACK - munmap(signal_stack, SIGSTKSZ); + munmap(signal_stack, caml_sigstksz()); #else free(signal_stack); #endif /* USE_MMAP_MAP_STACK */ diff --git a/runtime/startup_byt.c b/runtime/startup_byt.c index d438d7e8a8df..aad08da37138 100644 --- a/runtime/startup_byt.c +++ b/runtime/startup_byt.c @@ -159,15 +159,14 @@ int caml_attempt_open(char_os **name, struct exec_trailer *trail, void caml_read_section_descriptors(int fd, struct exec_trailer *trail) { - int toc_size; - - toc_size = trail->num_sections * 8; - trail->section = caml_stat_alloc(toc_size); - lseek(fd, - (long) (TRAILER_SIZE + toc_size), SEEK_END); + size_t toc_size; + trail->section = caml_stat_calloc(trail->num_sections, 8); + toc_size = (size_t) trail->num_sections * 8; + lseek(fd, - (file_offset) (TRAILER_SIZE + toc_size), SEEK_END); if (read(fd, (char *) trail->section, toc_size) != toc_size) caml_fatal_error("cannot read section table"); /* Fixup endianness of lengths */ - for (int i = 0; i < trail->num_sections; i++) + for (uint32_t i = 0; i < trail->num_sections; i++) fixup_endianness_trailer(&(trail->section[i].len)); } @@ -178,13 +177,13 @@ void caml_read_section_descriptors(int fd, struct exec_trailer *trail) int32_t caml_seek_optional_section(int fd, struct exec_trailer *trail, const char *name) { - long ofs; - - ofs = TRAILER_SIZE + trail->num_sections * 8; - for (int i = trail->num_sections - 1; i >= 0; i--) { + size_t ofs = TRAILER_SIZE + (size_t) trail->num_sections * 8; + uint32_t i = trail->num_sections; + while (i > 0) { + i -= 1; ofs += trail->section[i].len; if (strncmp(trail->section[i].name, name, 4) == 0) { - lseek(fd, -ofs, SEEK_END); + lseek(fd, - (file_offset) ofs, SEEK_END); return trail->section[i].len; } } @@ -552,7 +551,7 @@ CAMLexport void caml_main(char_os **argv) break; case WRONG_MAGIC: error( - "the file '%s' has not the right magic number: "\ + "the file '%s' has not the right magic number: " "expected %s, got %s", caml_stat_strdup_of_os(exe_name), EXEC_MAGIC, diff --git a/runtime/sys.c b/runtime/sys.c index e3dc6efc27f0..befcca71fd81 100644 --- a/runtime/sys.c +++ b/runtime/sys.c @@ -305,6 +305,20 @@ CAMLprim value caml_sys_file_exists(value name) return (Val_bool(mode != -1)); } +CAMLprim value caml_sys_filepath_exists(value name) +{ + CAMLparam1(name); + int mode = caml_sys_file_mode(name); + + if (mode == -1) { + if (errno == ENOTDIR || errno == ENOENT) + CAMLreturn(Val_false); + caml_sys_error(name); + } + + CAMLreturn(Val_true); +} + CAMLprim value caml_sys_is_directory(value name) { CAMLparam1(name); diff --git a/runtime/weak.c b/runtime/weak.c index f72aae1bd5e3..ddf5cef61aa9 100644 --- a/runtime/weak.c +++ b/runtime/weak.c @@ -382,8 +382,9 @@ static value ephe_get_field_copy (value e, mlsize_t offset) goto some; } - /* Don't copy, but do darken, custom blocks #7279 */ - if (Tag_val(val) == Custom_tag) { + /* Don't copy, but do darken, custom blocks #7279 + or continuations #14988 */ + if (Tag_val(val) == Custom_tag || Tag_val(val) == Cont_tag) { if (caml_marking_started()) caml_darken (Caml_state, val, 0); copy = val; diff --git a/stdlib/format.ml b/stdlib/format.ml index 3e727b7349ae..7619f05337ce 100644 --- a/stdlib/format.ml +++ b/stdlib/format.ml @@ -1105,6 +1105,13 @@ let buffered_out_flush oc key () = let std_buf_key = Domain.DLS.new_key (fun () -> Buffer.create pp_buffer_size) let err_buf_key = Domain.DLS.new_key (fun () -> Buffer.create pp_buffer_size) +(* Flush formatter, ignore [Sys_error _] if it was flushed previously, for use + at program exit and domain destruction. This is the same logic as in + [stdlib.ml] for out channels. *) +let pp_print_flush_ignore_sys_error ppf () = + try pp_print_flush ppf () + with Sys_error _ -> () + let std_formatter_key = DLS.new_key (fun () -> let ppf = pp_make_formatter (buffered_out_string std_buf_key) @@ -1125,7 +1132,7 @@ let err_formatter_key = DLS.new_key (fun () -> ppf.pp_out_newline <- display_newline ppf; ppf.pp_out_spaces <- display_blanks ppf; ppf.pp_out_indent <- display_indent ppf; - Domain.at_exit (pp_print_flush ppf); + Domain.at_exit (pp_print_flush_ignore_sys_error ppf); ppf) let _ = DLS.set err_formatter_key err_formatter @@ -1610,8 +1617,8 @@ let ldprintf fmt args ppf = lfprintf ppf fmt args (* Flushing standard formatters at end of execution. *) let flush_standard_formatters () = - pp_print_flush (DLS.get std_formatter_key) (); - pp_print_flush (DLS.get err_formatter_key) () + pp_print_flush_ignore_sys_error (DLS.get std_formatter_key) (); + pp_print_flush_ignore_sys_error (DLS.get err_formatter_key) () let () = at_exit flush_standard_formatters diff --git a/stdlib/set.ml b/stdlib/set.ml index f4df45047185..d2fa7af47ae9 100644 --- a/stdlib/set.ml +++ b/stdlib/set.ml @@ -276,6 +276,7 @@ module Make(Ord: OrderedType) = else bal l v rr let rec union s1 s2 = + if s1 == s2 then s1 else match (s1, s2) with (Empty, t2) -> t2 | (t1, Empty) -> t1 @@ -283,15 +284,22 @@ module Make(Ord: OrderedType) = if h1 >= h2 then if h2 = 1 then add v2 s1 else begin let (l2, _, r2) = split v1 s2 in - join (union l1 l2) v1 (union r1 r2) + let ll = union l1 l2 in + let rr = union r1 r2 in + if ll == l1 && rr == r1 then s1 else + join ll v1 rr end else if h1 = 1 then add v1 s2 else begin let (l1, _, r1) = split v2 s1 in - join (union l1 l2) v2 (union r1 r2) + let ll = union l1 l2 in + let rr = union r1 r2 in + if ll == l2 && rr == r2 then s2 else + join ll v2 rr end let rec inter s1 s2 = + if s1 == s2 then s1 else match (s1, s2) with (Empty, _) -> Empty | (_, Empty) -> Empty @@ -300,7 +308,11 @@ module Make(Ord: OrderedType) = (l2, false, r2) -> concat (inter l1 l2) (inter r1 r2) | (l2, true, r2) -> - join (inter l1 l2) v1 (inter r1 r2) + let ll = inter l1 l2 in + let rr = inter r1 r2 in + if ll == l1 && rr == r1 then s1 else + if ll == l2 && rr == r2 then s2 else + join ll v1 rr (* Same as split, but compute the left and right subtrees only if the pivot element is not in the set. The right subtree @@ -335,6 +347,7 @@ module Make(Ord: OrderedType) = | Found -> false let rec diff s1 s2 = + if s1 == s2 then Empty else match (s1, s2) with (Empty, _) -> Empty | (t1, Empty) -> t1 diff --git a/stdlib/sys.ml.in b/stdlib/sys.ml.in index 6985b49651e2..a74d50c5129d 100644 --- a/stdlib/sys.ml.in +++ b/stdlib/sys.ml.in @@ -55,6 +55,7 @@ external runtime_parameters : unit -> string = "caml_runtime_parameters" external poll_actions : unit -> unit = "%poll" external file_exists: string -> bool = "caml_sys_file_exists" +external filepath_exists: string -> bool = "caml_sys_filepath_exists" external is_directory : string -> bool = "caml_sys_is_directory" external is_regular_file : string -> bool = "caml_sys_is_regular_file" external remove: string -> unit = "caml_sys_remove" diff --git a/stdlib/sys.mli b/stdlib/sys.mli index 6fc3b001b25e..e4907a33d6eb 100644 --- a/stdlib/sys.mli +++ b/stdlib/sys.mli @@ -43,7 +43,24 @@ val runtime_executable : string *) external file_exists : string -> bool = "caml_sys_file_exists" -(** Test if a file with the given name exists. *) +(** [file_exists p] tests if the file path [p] exists. + + However, system errors such as insufficient permissions to search + directories are returned as [false], in which case the file path may + actually exist. It also masks serious error conditions in the system and + returns them as [false]. Unless you rely on that behavior, use + {!Sys.filepath_exists} instead. +*) + +external filepath_exists : string -> bool = "caml_sys_filepath_exists" +(** [filepath_exists p] tests if the file path [p] exists. + + If [false] is returned, the path [p] does not exist on the file system. All + other errors, including insufficient permissions to search directories, are + reported by a [Sys_error] exception. + + @since 5.6 +*) external is_directory : string -> bool = "caml_sys_is_directory" (** Returns [true] if the given name refers to a directory, diff --git a/stdlib/uchar.ml b/stdlib/uchar.ml index e3f3d7b22829..39c662cc8258 100644 --- a/stdlib/uchar.ml +++ b/stdlib/uchar.ml @@ -18,6 +18,7 @@ external format_int : string -> int -> string = "caml_format_int" let err_no_pred = "U+0000 has no predecessor" let err_no_succ = "U+10FFFF has no successor" let err_not_sv i = format_int "%X" i ^ " is not a Unicode scalar value" +let err_not_ascii u = "U+" ^ format_int "%04X" u ^ " is not an ASCII character" let err_not_latin1 u = "U+" ^ format_int "%04X" u ^ " is not a latin1 character" type t = int @@ -45,11 +46,17 @@ let of_int i = if is_valid i then i else invalid_arg (err_not_sv i) external unsafe_of_int : int -> t = "%identity" external to_int : t -> int = "%identity" -let is_char u = u < 256 -let of_char c = Char.code c -let to_char u = - if u > 255 then invalid_arg (err_not_latin1 u) else +let is_ascii u = u < 128 +let ascii_to_char u = + if u >= 128 then invalid_arg (err_not_ascii u) else + Char.unsafe_chr u +let is_latin1 u = u < 256 +let latin1_to_char u = + if u >= 256 then invalid_arg (err_not_latin1 u) else Char.unsafe_chr u +let is_char = is_latin1 +let of_char c = Char.code c +let to_char = latin1_to_char let unsafe_to_char = Char.unsafe_chr diff --git a/stdlib/uchar.mli b/stdlib/uchar.mli index 070c7e661c8d..ac960c20eaf5 100644 --- a/stdlib/uchar.mli +++ b/stdlib/uchar.mli @@ -74,16 +74,42 @@ val unsafe_of_int : int -> t val to_int : t -> int (** [to_int u] is [u] as an integer. *) +val is_ascii : t -> bool +(** [is_ascii u] is [true] if and only if [u] is in the range U+0000-U+007F. + + @since 5.6 *) + +val ascii_to_char : t -> char +(** [ascii_to_char u] is the ASCII encoding of the ASCII character [u]. + This converts the characters in the range U+0000-U+007F to the + corresponding byte. + + @raise Invalid_argument if [u] does not satisfy {!is_ascii}. + @since 5.6 *) + +val is_latin1 : t -> bool +(** [is_latin1 u] is [true] if and only if [u] is in the range U+0000-U+00FF. + + @since 5.6 *) + +val latin1_to_char : t -> char +(** [latin1_to_char u] is the latin1 encoding of the latin1 character [u]. + This converts the characters in the range U+0000-U+00FF to the + corresponding byte. + + @raise Invalid_argument if [u] does not satisfy {!is_latin1}. + @since 5.6 *) + val is_char : t -> bool -(** [is_char u] is [true] if and only if [u] is a latin1 OCaml character. *) +(** [is_char] is a deprecated name for {!is_latin1}. *) val of_char : char -> t -(** [of_char c] is [c] as a Unicode character. *) +(** [of_char c] is [c] as a Unicode character. This interprets [c] as a + latin1 encoded character, mapping the byte to the corresponding + character in the range U+0000-U+00FF. *) val to_char : t -> char -(** [to_char u] is [u] as an OCaml latin1 character. - - @raise Invalid_argument if [u] does not satisfy {!is_char}. *) +(** [to_char] is a deprecated name for {!latin1_to_char}. *) (**/**) val unsafe_to_char : t -> char diff --git a/stdlib/weak.mli b/stdlib/weak.mli index bae2f51c0eba..1d7f8040326c 100644 --- a/stdlib/weak.mli +++ b/stdlib/weak.mli @@ -72,7 +72,8 @@ val get_copy : 'a t -> int -> 'a option @raise Invalid_argument if [n] is not in the range 0 to {!Weak.length}[ ar - 1]. - If the element is a custom block it is not copied. + If the element is a custom block or a continuation it is not + copied. *) diff --git a/testsuite/tests/basic-manyargs/outgoing_stack_args.ml b/testsuite/tests/basic-manyargs/outgoing_stack_args.ml new file mode 100644 index 000000000000..56cc9f6d32ea --- /dev/null +++ b/testsuite/tests/basic-manyargs/outgoing_stack_args.ml @@ -0,0 +1,51 @@ +(* TEST + modules = "outgoing_stack_args_.c"; +*) + +(* Regression test for outgoing stack arguments. + + A call whose arguments do not all fit in registers passes the surplus in + an outgoing-argument area that the caller allocates below its own frame. + If the caller reserves the wrong amount, the arguments it writes there + overflow into its own frame. On POWER, [Istackoffset] must reserve the + ELFv2 linkage area in addition to the arguments themselves, since + [slot_offset] places outgoing arguments above it. + + External calls are what reach this path in practice: they follow the C + ABI, whose register budget is small and has no escape hatch. (An + OCaml-to-OCaml call is not enough: arguments that do not fit in registers + go into domain-state slots first -- 64 of them, see + [Proc.size_domainstate_args] -- so such a call would need more than 80 + arguments before it used the stack at all.) + + Each call below is made with values held live across it, so an + overflowing outgoing-argument area shows up as a wrong result. *) + +external stack_args_ints : + int -> int -> int -> int -> int -> int -> + int -> int -> int -> int -> int -> int -> int + = "stack_args_ints_byte" "stack_args_ints" + +external stack_args_floats : + (float [@unboxed]) -> (float [@unboxed]) -> (float [@unboxed]) -> + (float [@unboxed]) -> (float [@unboxed]) -> (float [@unboxed]) -> + (float [@unboxed]) -> (float [@unboxed]) -> (float [@unboxed]) -> + (float [@unboxed]) -> (float [@unboxed]) -> (float [@unboxed]) -> + (float [@unboxed]) -> (float [@unboxed]) -> (float [@unboxed]) -> + (float [@unboxed]) -> (float [@unboxed]) + = "stack_args_floats_byte" "stack_args_floats" + +let () = + let a = Sys.opaque_identity 1000 in + let b = Sys.opaque_identity 2000 in + let c = Sys.opaque_identity 3000 in + let d = Sys.opaque_identity 4000 in + let ints = stack_args_ints 1 2 3 4 5 6 7 8 9 10 11 12 in + let floats = + stack_args_floats 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. + in + (* Arguments taken from live locals, and a result kept live across a + further call. *) + let ints2 = stack_args_ints a b c d 1 2 3 4 5 6 7 8 in + Printf.printf "ints=%d floats=%.1f ints2=%d a=%d b=%d c=%d d=%d\n" + ints floats ints2 a b c d diff --git a/testsuite/tests/basic-manyargs/outgoing_stack_args.reference b/testsuite/tests/basic-manyargs/outgoing_stack_args.reference new file mode 100644 index 000000000000..9d74bb804d75 --- /dev/null +++ b/testsuite/tests/basic-manyargs/outgoing_stack_args.reference @@ -0,0 +1 @@ +ints=78 floats=136.0 ints2=10036 a=1000 b=2000 c=3000 d=4000 diff --git a/testsuite/tests/basic-manyargs/outgoing_stack_args_.c b/testsuite/tests/basic-manyargs/outgoing_stack_args_.c new file mode 100644 index 000000000000..9641004c306e --- /dev/null +++ b/testsuite/tests/basic-manyargs/outgoing_stack_args_.c @@ -0,0 +1,65 @@ +/**************************************************************************/ +/* */ +/* OCaml */ +/* */ +/* Tim McGilchrist, Tarides */ +/* */ +/* Copyright 2026 Tarides */ +/* */ +/* All rights reserved. This file is distributed under the terms of */ +/* the GNU Lesser General Public License version 2.1, with the */ +/* special exception on linking described in the file LICENSE. */ +/* */ +/**************************************************************************/ + +#include +#include + +/* Twelve integer arguments: more than any supported C ABI passes in + registers (8 on PowerPC ELFv2, arm64 and RISC-V, 6 on amd64 SysV), so the + surplus is passed in the caller's outgoing-argument area. */ + +CAMLprim value stack_args_ints(value a, value b, value c, value d, + value e, value f, value g, value h, + value i, value j, value k, value l) +{ + return Val_long(Long_val(a) + Long_val(b) + Long_val(c) + Long_val(d) + + Long_val(e) + Long_val(f) + Long_val(g) + Long_val(h) + + Long_val(i) + Long_val(j) + Long_val(k) + Long_val(l)); +} + +CAMLprim value stack_args_ints_byte(value * argv, int argn) +{ + (void) argn; + return stack_args_ints(argv[0], argv[1], argv[2], argv[3], + argv[4], argv[5], argv[6], argv[7], + argv[8], argv[9], argv[10], argv[11]); +} + +/* Sixteen floating-point arguments: more than any supported C ABI passes in + floating-point registers (13 on PowerPC ELFv2, 8 elsewhere). Integer and + floating-point arguments are assigned to registers and to stack slots by + separate rules, so this exercises a different part of the outgoing-argument + area than [stack_args_ints] above. */ + +CAMLprim double stack_args_floats(double a, double b, double c, double d, + double e, double f, double g, double h, + double i, double j, double k, double l, + double m, double n, double o, double p) +{ + return a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p; +} + +CAMLprim value stack_args_floats_byte(value * argv, int argn) +{ + (void) argn; + return caml_copy_double( + stack_args_floats(Double_val(argv[0]), Double_val(argv[1]), + Double_val(argv[2]), Double_val(argv[3]), + Double_val(argv[4]), Double_val(argv[5]), + Double_val(argv[6]), Double_val(argv[7]), + Double_val(argv[8]), Double_val(argv[9]), + Double_val(argv[10]), Double_val(argv[11]), + Double_val(argv[12]), Double_val(argv[13]), + Double_val(argv[14]), Double_val(argv[15]))); +} diff --git a/testsuite/tests/basic/sets.ml b/testsuite/tests/basic/sets.ml deleted file mode 100644 index ca5b14a1259a..000000000000 --- a/testsuite/tests/basic/sets.ml +++ /dev/null @@ -1,27 +0,0 @@ -(* TEST *) - -module IntSet = Set.Make(struct type t = int let compare x y = x-y end) - -let even = List.fold_right IntSet.add [0; -2; 2; 4; 6; -10] IntSet.empty - -let odd = List.fold_right IntSet.add [9; -7; 5; 1; -3] IntSet.empty - -let _ = - for i = -10 to 10 do - Printf.printf "%d %B %B\n" i (IntSet.mem i even) (IntSet.mem i odd) - done - -module PowerSet(BaseSet: Set.S) - (SetOrd: functor(S: Set.S) -> Set.OrderedType) = - Set.Make(SetOrd(BaseSet)) - -module IntSetSet = PowerSet(IntSet)(functor (S: Set.S) -> S) - -let setofset = List.fold_right IntSetSet.add [even; odd] IntSetSet.empty - -let _ = - List.iter - (fun s -> Printf.printf "%B\n" (IntSetSet.mem s setofset)) - [IntSet.empty; even; odd; IntSet.union even odd] - -let _ = exit 0 diff --git a/testsuite/tests/basic/sets.reference b/testsuite/tests/basic/sets.reference deleted file mode 100644 index 2d4ebc2468e3..000000000000 --- a/testsuite/tests/basic/sets.reference +++ /dev/null @@ -1,25 +0,0 @@ --10 true false --9 false false --8 false false --7 false true --6 false false --5 false false --4 false false --3 false true --2 true false --1 false false -0 true false -1 false true -2 true false -3 false false -4 true false -5 false true -6 true false -7 false false -8 false false -9 false true -10 false false -false -true -true -false diff --git a/testsuite/tests/frame-pointers/c_call.ml b/testsuite/tests/frame-pointers/c_call.ml index 57890b64b0f0..11119dde264f 100644 --- a/testsuite/tests/frame-pointers/c_call.ml +++ b/testsuite/tests/frame-pointers/c_call.ml @@ -3,6 +3,9 @@ readonly_files = "fp_backtrace.c c_call_.c"; all_modules = "${readonly_files} c_call.ml"; if bsd then flags = "-cclib -lexecinfo"; + (* POWER has no caml_c_call_copy_stack_args, so its backtrace differs. *) + if arch_power then + reference = "${test_source_directory}/c_call.power.reference"; native; *) diff --git a/testsuite/tests/frame-pointers/c_call.power.reference b/testsuite/tests/frame-pointers/c_call.power.reference new file mode 100644 index 000000000000..23095e7431c1 --- /dev/null +++ b/testsuite/tests/frame-pointers/c_call.power.reference @@ -0,0 +1,12 @@ +fp_backtrace_many_args +caml_c_call_stack_args +camlC_call.f +camlC_call.entry +caml_program +caml_c_call +camlC_call.f +camlC_call.entry +caml_program +camlC_call.f +camlC_call.entry +caml_program diff --git a/testsuite/tests/frame-pointers/fp_backtrace.c b/testsuite/tests/frame-pointers/fp_backtrace.c index 471b0cb31c87..9c3184a639b9 100644 --- a/testsuite/tests/frame-pointers/fp_backtrace.c +++ b/testsuite/tests/frame-pointers/fp_backtrace.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -18,12 +19,45 @@ #define RE_TRIM_FUNC "(caml.*)_[[:digit:]]+" #define CAML_ENTRY "caml_program" +/* + * Stack frame layout differs by architecture: + * + * x86_64 / ARM64: + * offset 0: previous frame pointer + * offset 8: return address + * The return address for frame fi is at fi->retaddr. + * + * Power64 (ELFv2 ABI): + * offset 0: back chain (previous SP) + * offset 8: CR save area / TOC save area + * offset 16: LR save area (return address) + * IMPORTANT: On Power, the callee saves LR into the CALLER's frame at + * offset 16 before allocating its own frame. So the return address for + * frame fi is at fi->prev + 16, not fi + 16. + */ +#if defined(__powerpc64__) +typedef struct frame_info +{ + struct frame_info* prev; /* back chain at offset 0 */ +} frame_info; + +/* On Power, return address is saved by callee into caller's frame at offset 16 */ +static inline void* get_retaddr(const struct frame_info* fi) { + if (!fi->prev || (uintptr_t)fi->prev < 0x1000) return NULL; + return *((void**)((char*)fi->prev + 16)); +} +#else typedef struct frame_info { struct frame_info* prev; /* base pointer / frame pointer */ void* retaddr; /* instruction pointer / program counter */ } frame_info; +static inline void* get_retaddr(const struct frame_info* fi) { + return fi->retaddr; +} +#endif + /* * A backtrace symbol looks like this on Linux: * ./path/to/binary(camlModule.fn_123+0xAABBCC) [0xAABBCCDDEE] @@ -36,7 +70,11 @@ typedef struct frame_info */ static const char* backtrace_symbol(const struct frame_info* fi) { - char** symbols = backtrace_symbols(&fi->retaddr, 1); + void* retaddr = get_retaddr(fi); + if (!retaddr) + return NULL; + + char** symbols = backtrace_symbols(&retaddr, 1); if (!symbols) { perror("backtrace_symbols"); return NULL; @@ -134,6 +172,11 @@ void fp_backtrace(CAMLunused value argv0) #endif next = frame->prev; + /* Stop if back chain is NULL or points to very low memory (invalid) */ + if (!next || (uintptr_t)next < 0x1000) { + break; + } + /* Detect the simplest kind of infinite loop */ #if defined(__riscv) /* On RISC-V, frame is CFA-16 (record) but next is a CFA value, diff --git a/testsuite/tests/frame-pointers/stack_realloc.ml b/testsuite/tests/frame-pointers/stack_realloc.ml index db2d31fdee99..a1315ba38029 100644 --- a/testsuite/tests/frame-pointers/stack_realloc.ml +++ b/testsuite/tests/frame-pointers/stack_realloc.ml @@ -5,8 +5,9 @@ (* NOTE clang on macOS and gcc on Linux are less eager to inline certain C functions in the runtime. *) if bsd then flags = "-cclib -lexecinfo"; - arch_arm64 || arch_amd64 || arch_riscv; - reference = "${test_source_directory}/stack_realloc.${arch}.reference"; + arch_arm64 || arch_amd64 || arch_riscv || arch_power; + if arch_amd64 then + reference = "${test_source_directory}/stack_realloc.amd64.reference"; native; *) diff --git a/testsuite/tests/frame-pointers/stack_realloc.arm64.reference b/testsuite/tests/frame-pointers/stack_realloc.reference similarity index 100% rename from testsuite/tests/frame-pointers/stack_realloc.arm64.reference rename to testsuite/tests/frame-pointers/stack_realloc.reference diff --git a/testsuite/tests/frame-pointers/stack_realloc.riscv.reference b/testsuite/tests/frame-pointers/stack_realloc.riscv.reference deleted file mode 100644 index 5b130f262c1d..000000000000 --- a/testsuite/tests/frame-pointers/stack_realloc.riscv.reference +++ /dev/null @@ -1,10 +0,0 @@ -camlStack_realloc.callback -caml_start_program -caml_callback_exn -caml_callback -c_fun -caml_c_call -camlStack_realloc.f_comp -caml_runstack -camlStack_realloc.entry -caml_program diff --git a/testsuite/tests/frame-pointers/stack_realloc2.ml b/testsuite/tests/frame-pointers/stack_realloc2.ml index 03b81605fb9f..8073951c3255 100644 --- a/testsuite/tests/frame-pointers/stack_realloc2.ml +++ b/testsuite/tests/frame-pointers/stack_realloc2.ml @@ -5,8 +5,9 @@ (* NOTE clang on macOS and gcc on Linux are less eager to inline certain C functions in the runtime. *) if bsd then flags = "-cclib -lexecinfo"; - arch_arm64 || arch_amd64 || arch_riscv; - reference = "${test_source_directory}/stack_realloc2.${arch}.reference"; + arch_arm64 || arch_amd64 || arch_riscv || arch_power; + if arch_amd64 then + reference = "${test_source_directory}/stack_realloc2.amd64.reference"; native; *) diff --git a/testsuite/tests/frame-pointers/stack_realloc2.arm64.reference b/testsuite/tests/frame-pointers/stack_realloc2.reference similarity index 100% rename from testsuite/tests/frame-pointers/stack_realloc2.arm64.reference rename to testsuite/tests/frame-pointers/stack_realloc2.reference diff --git a/testsuite/tests/frame-pointers/stack_realloc2.riscv.reference b/testsuite/tests/frame-pointers/stack_realloc2.riscv.reference deleted file mode 100644 index 967e48b23fbd..000000000000 --- a/testsuite/tests/frame-pointers/stack_realloc2.riscv.reference +++ /dev/null @@ -1,10 +0,0 @@ -camlStack_realloc2.callback -caml_start_program -caml_callback_exn -caml_callback -c_fun -caml_c_call -camlStack_realloc2.f_comp -caml_runstack -camlStack_realloc2.entry -caml_program diff --git a/testsuite/tests/letrec-check/flat_float_array.ml b/testsuite/tests/letrec-check/flat_float_array.ml index 655a642beca0..9144675ef770 100644 --- a/testsuite/tests/letrec-check/flat_float_array.ml +++ b/testsuite/tests/letrec-check/flat_float_array.ml @@ -50,3 +50,14 @@ Line 1, characters 31-41: ^^^^^^^^^^ Error: This kind of expression is not allowed as right-hand side of "let rec" |}] + +(* PR #14993: on 32-bit systems, doubles and addresses are different + sizes, so a generic array literal that may be instantiated to a flat + float array must be classified as having dynamic size. Before #14993 + the following code produced a segmentation fault. *) +let make v = let rec a = [| v; v; v; v; v; v; v; v |] in a +let fa = make 2.5 +[%%expect {| +val make : 'a -> 'a array = +val fa : float array = [|2.5; 2.5; 2.5; 2.5; 2.5; 2.5; 2.5; 2.5|] +|}] diff --git a/testsuite/tests/lib-float/fma.ml b/testsuite/tests/lib-float/fma.ml new file mode 100644 index 000000000000..e6ce95ddeda4 --- /dev/null +++ b/testsuite/tests/lib-float/fma.ml @@ -0,0 +1,51 @@ +(* TEST *) + +(* fma rounds once, so the first block differs from a separate multiply and + add. opaque_identity stops the arguments folding. *) + +let opaque = Sys.opaque_identity + +let check name got want = + (* Equality alone treats 0. and -0. as equal. *) + let ok = + if Float.is_nan want then Float.is_nan got + else Int64.bits_of_float got = Int64.bits_of_float want + in + if not ok then + failwith (Printf.sprintf "fma %s: got %h, expected %h" name got want) + +let fma x y z = Float.fma (opaque x) (opaque y) (opaque z) + +let () = + check "(1+2^-52)(1-2^-53)-1" + (fma 0x1.0000000000001p+0 0x1.fffffffffffffp-1 (-1.)) + 0x1.ffffffffffffep-54; + check "sqrt2*sqrt2-2" + (fma 0x1.6a09e667f3bcdp+0 0x1.6a09e667f3bcdp+0 (-2.)) + 0x1.3b3efbf5e2229p-52; + check "(1+2^-27)^2-1" + (fma 0x1.0000002p+0 0x1.0000002p+0 (-1.)) + 0x1.0000001p-26; + check "one ulp apart" + (fma (-0x1.4eb5248db40afp-136) (-0x1.5128862c33a4fp+562) + 0x1.5563dab2cd31ep+398) + 0x1.b8d170ee322e6p+426; + + check "3*5-15" (fma 3. 5. (-15.)) 0.; + check "0*0-0" (fma 0. 0. (-0.)) 0.; + check "-0*0-0" (fma (-0.) 0. (-0.)) (-0.); + + check "overflow" (fma 1e300 1e300 0.) infinity; + check "denormal" (fma 0x1p-537 0x1p-537 0.) 0x1p-1074; + check "denormal sum" (fma 0x1p-1074 1. 0x1p-1074) 0x1p-1073; + check "max_float" (fma max_float 1. 0.) max_float; + + check "inf*0" (fma infinity 0. 1.) nan; + check "inf*0+nan" (fma infinity 0. nan) nan; + check "inf-inf" (fma 1. infinity neg_infinity) nan; + check "nan*1+1" (fma nan 1. 1.) nan; + + for i = 0 to 1000 do + let x = float_of_int i in + check (string_of_int i ^ "^2+1") (fma x x 1.) (float_of_int (i * i + 1)) + done diff --git a/testsuite/tests/lib-float/round.ml b/testsuite/tests/lib-float/round.ml new file mode 100644 index 000000000000..c8b5bf926992 --- /dev/null +++ b/testsuite/tests/lib-float/round.ml @@ -0,0 +1,82 @@ +(* TEST *) + +(* Rounding to a float integer is exact, so each expected value is the only + admissible answer. [Float.round] takes halfway cases away from zero, so 2.5 + is 3. and not the even 2. opaque_identity stops the arguments folding. *) + +let opaque = Sys.opaque_identity + +let check name x got want = + (* Equality alone treats 0. and -0. as equal. *) + let ok = + if Float.is_nan want then Float.is_nan got + else Int64.bits_of_float got = Int64.bits_of_float want + in + if not ok then + failwith (Printf.sprintf "%s %h: got %h, expected %h" name x got want) + +let check_val name x got want = + if not (got = want) then + failwith (Printf.sprintf "%s %h: got %h, expected %h" name x got want) + +let case x ~floor:f ~ceil:c ~trunc:t ~round:r = + check "floor" x (Float.floor (opaque x)) f; + check "ceil" x (Float.ceil (opaque x)) c; + check "trunc" x (Float.trunc (opaque x)) t; + check "round" x (Float.round (opaque x)) r; + check "Stdlib.floor" x (floor (opaque x)) f; + check "Stdlib.ceil" x (ceil (opaque x)) c + +let () = + case 0. ~floor:0. ~ceil:0. ~trunc:0. ~round:0.; + case (-0.) ~floor:(-0.) ~ceil:(-0.) ~trunc:(-0.) ~round:(-0.); + case 1. ~floor:1. ~ceil:1. ~trunc:1. ~round:1.; + case (-1.) ~floor:(-1.) ~ceil:(-1.) ~trunc:(-1.) ~round:(-1.); + + case 0.5 ~floor:0. ~ceil:1. ~trunc:0. ~round:1.; + case (-0.5) ~floor:(-1.) ~ceil:(-0.) ~trunc:(-0.) ~round:(-1.); + case 1.5 ~floor:1. ~ceil:2. ~trunc:1. ~round:2.; + case (-1.5) ~floor:(-2.) ~ceil:(-1.) ~trunc:(-1.) ~round:(-2.); + case 2.5 ~floor:2. ~ceil:3. ~trunc:2. ~round:3.; + case (-2.5) ~floor:(-3.) ~ceil:(-2.) ~trunc:(-2.) ~round:(-3.); + + case 0x1.fffffffffffffp-2 + ~floor:0. ~ceil:1. ~trunc:0. ~round:0.; + case (-0x1.fffffffffffffp-2) + ~floor:(-1.) ~ceil:(-0.) ~trunc:(-0.) ~round:(-0.); + + case 3.7 ~floor:3. ~ceil:4. ~trunc:3. ~round:4.; + case (-3.7) ~floor:(-4.) ~ceil:(-3.) ~trunc:(-3.) ~round:(-4.); + + case 0x1p-1074 ~floor:0. ~ceil:1. ~trunc:0. ~round:0.; + case (-0x1p-1074) ~floor:(-1.) ~ceil:(-0.) ~trunc:(-0.) ~round:(-0.); + + case 0x1.fffffffffffffp+51 + ~floor:4503599627370495. ~ceil:4503599627370496. + ~trunc:4503599627370495. ~round:4503599627370496.; + case (-0x1.fffffffffffffp+51) + ~floor:(-4503599627370496.) ~ceil:(-4503599627370495.) + ~trunc:(-4503599627370495.) ~round:(-4503599627370496.); + + case 1e300 ~floor:1e300 ~ceil:1e300 ~trunc:1e300 ~round:1e300; + case (-1e300) ~floor:(-1e300) ~ceil:(-1e300) ~trunc:(-1e300) ~round:(-1e300); + case max_float + ~floor:max_float ~ceil:max_float ~trunc:max_float ~round:max_float; + + case infinity + ~floor:infinity ~ceil:infinity ~trunc:infinity ~round:infinity; + case neg_infinity + ~floor:neg_infinity ~ceil:neg_infinity + ~trunc:neg_infinity ~round:neg_infinity; + case nan ~floor:nan ~ceil:nan ~trunc:nan ~round:nan; + + for i = -1000 to 1000 do + let x = float_of_int i /. 8. in + let fdiv a b = if a >= 0 then a / b else - ((- a + b - 1) / b) in + let want name v = check_val name x v in + want "floor" (Float.floor (opaque x)) (float_of_int (fdiv i 8)); + want "ceil" (Float.ceil (opaque x)) (float_of_int (- (fdiv (- i) 8))); + want "trunc" (Float.trunc (opaque x)) (float_of_int (i / 8)); + want "round" (Float.round (opaque x)) + (float_of_int (if i >= 0 then (i + 4) / 8 else - ((- i + 4) / 8))) + done diff --git a/testsuite/tests/lib-float/sqrt.ml b/testsuite/tests/lib-float/sqrt.ml new file mode 100644 index 000000000000..c3d0f0f0640d --- /dev/null +++ b/testsuite/tests/lib-float/sqrt.ml @@ -0,0 +1,36 @@ +(* TEST *) + +(* IEEE 754 requires sqrt to be correctly rounded, so each expected value is + the only admissible answer. opaque_identity stops the arguments folding. *) + +let opaque = Sys.opaque_identity + +let check name got want = + (* Equality alone treats 0. and -0. as equal. *) + let ok = + if Float.is_nan want then Float.is_nan got + else Int64.bits_of_float got = Int64.bits_of_float want + in + if not ok then + failwith (Printf.sprintf "sqrt %s: got %h, expected %h" name got want) + +let () = + check "0." (sqrt (opaque 0.)) 0.; + check "-0." (sqrt (opaque (-0.))) (-0.); + check "1." (sqrt (opaque 1.)) 1.; + check "4." (sqrt (opaque 4.)) 2.; + check "2." (sqrt (opaque 2.)) 0x1.6a09e667f3bcdp+0; + check "0.5" (sqrt (opaque 0.5)) 0x1.6a09e667f3bcdp-1; + check "1e300" (sqrt (opaque 1e300)) 1e150; + check "max_float" (sqrt (opaque max_float)) 0x1.fffffffffffffp+511; + check "min_float" (sqrt (opaque min_float)) 0x1p-511; + check "denormal" (sqrt (opaque 0x1p-1074)) 0x1p-537; + check "infinity" (sqrt (opaque infinity)) infinity; + check "nan" (sqrt (opaque nan)) nan; + check "-1." (sqrt (opaque (-1.))) nan; + check "neg_infinity" (sqrt (opaque neg_infinity)) nan; + + for i = 0 to 1000 do + let x = float_of_int i in + check (string_of_int i ^ "^2") (sqrt (opaque (x *. x))) x + done diff --git a/testsuite/tests/lib-marshal/fuzzy.ml b/testsuite/tests/lib-marshal/fuzzy.ml index 88b0d65c9345..9d0be2e11f31 100644 --- a/testsuite/tests/lib-marshal/fuzzy.ml +++ b/testsuite/tests/lib-marshal/fuzzy.ml @@ -79,6 +79,17 @@ let test ic = end; Gc.full_major() +(* Same, but use Marshal.from_string instead *) + +let test_string ic = + In_channel.set_binary_mode ic true; + let s = In_channel.input_all ic in + begin try + ignore (Marshal.from_string s 0) + with Failure _ | Invalid_argument _ | Out_of_memory -> () + end; + Gc.full_major() + (* Internal fuzzing. Rather naive. *) let random_offset b = @@ -123,7 +134,7 @@ let fuzz1 () = end; Gc.full_major() done; - Bytes.set_uint8 b i (Bytes.get_uint8 b i) + Bytes.set_uint8 b i (String.get_uint8 d i) done let () = @@ -135,7 +146,9 @@ let () = "-x", Arg.Unit fuzz1, " Perform internal fuzzing test (exhaustive 1-byte)"; "-r", Arg.Unit (fun () -> test stdin), - " Read marshaled data from standard input" + " Read marshaled data from standard input"; + "-s", Arg.Unit (fun () -> test_string stdin), + " Read marshaled data from standard input via a string" ] (fun s -> raise (Arg.Bad ("don't know what to do with " ^ s))) "Usage: fuzzy [option].\nOptions are:" diff --git a/testsuite/tests/lib-runtime-events/test_create_cursor_failures.reference b/testsuite/tests/lib-runtime-events/test_create_cursor_failures.reference index 948c6090115d..a1114f7df01b 100644 --- a/testsuite/tests/lib-runtime-events/test_create_cursor_failures.reference +++ b/testsuite/tests/lib-runtime-events/test_create_cursor_failures.reference @@ -1,4 +1,4 @@ -Runtime_events: no ring for current process. Was runtime_events started? +Runtime_events: no ring for current process. Was runtime_events started? OK OK Runtime_events: could not create cursor for specified path. diff --git a/testsuite/tests/lib-runtime-events/test_user_write_alloc.ml b/testsuite/tests/lib-runtime-events/test_user_write_alloc.ml new file mode 100644 index 000000000000..38d5c587f072 --- /dev/null +++ b/testsuite/tests/lib-runtime-events/test_user_write_alloc.ml @@ -0,0 +1,52 @@ +(* TEST + include runtime_events; +*) + +(* Check that [Runtime_events.User.write] does not allocate. *) + +open Runtime_events + +type User.tag += Alloc_test + +let counter = User.register "alloc.counter" Alloc_test Type.int + +let custom_type = + let encode buf () = Bytes.set buf 0 'x'; 1 in + let decode _buf _size = () in + Type.register ~encode ~decode + +let custom = User.register "alloc.custom" Alloc_test custom_type + +let n = 1000 + +let measure f = + let before = Gc.minor_words () in + f (); + let after = Gc.minor_words () in + after -. before + +let () = + start (); + User.write counter 0; + User.write custom (); + let baseline = measure (fun () -> ()) in + let int_words = measure (fun () -> + for i = 1 to n do User.write counter i done) + in + let custom_words = measure (fun () -> + for _ = 1 to n do User.write custom () done) + in + assert (int_words = baseline); + assert (custom_words = baseline); + (* Make sure that the events reached the event ring. *) + let seen = ref 0 in + let handler _domain_id _ts _event _value = incr seen in + let cursor = create_cursor None in + let callbacks = + Callbacks.create () + |> Callbacks.add_user_event Type.int handler + |> Callbacks.add_user_event custom_type handler + in + ignore (read_poll cursor callbacks None); + free_cursor cursor; + assert (!seen > 0) diff --git a/testsuite/tests/lib-set/testset.ml b/testsuite/tests/lib-set/testset.ml index 2d1bdb7e3689..42c292081990 100644 --- a/testsuite/tests/lib-set/testset.ml +++ b/testsuite/tests/lib-set/testset.ml @@ -218,14 +218,20 @@ let test x s1 s2 = let relt() = Random.int 10 -let rset() = - let s = ref S.empty in +let rset from = + let s = ref from in for i = 1 to Random.int 10 do s := S.add (relt()) !s done; !s let _ = Random.init 42; - for i = 1 to 10000 do test (relt()) (rset()) (rset()) done + for i = 1 to 9000 do test (relt ()) (rset S.empty) (rset S.empty) done; + for i = 1 to 1000 do + let set = rset S.empty in + (* Create sets with shared structure, otherwise the use of physical equality + is never tested. *) + test (relt ()) (rset set) (rset set) + done let () = (* #6645: check that adding an element to set that already contains diff --git a/testsuite/tests/lib-sys/file_exists.ml b/testsuite/tests/lib-sys/file_exists.ml new file mode 100644 index 000000000000..464ab17375df --- /dev/null +++ b/testsuite/tests/lib-sys/file_exists.ml @@ -0,0 +1,79 @@ +(* TEST + include unix; + hasunix; + not-root; + not windows; + bytecode; + native; +*) + +(* Test Sys.file_exists and Sys.filepath_exists *) + +let writefile filename contents = + let oc = open_out_bin filename in + output_string oc contents; + close_out oc + +let safe_remove filename = + try Sys.remove filename with Sys_error _ -> () + +let safe_rmdir dirname = + try Sys.rmdir dirname with Sys_error _ -> () + +let show ?(expect_either=[]) name f = + print_string name; print_string ": "; + (try print_string (string_of_bool (f ())) + with Sys_error msg -> print_string "Sys_error: "; + if List.mem msg expect_either then print_string "$EXPECTED" + else print_string msg); + print_newline () + +let () = + (* Existing regular file *) + let f = "exists.txt" in + writefile f "some content"; + show "file_exists on existing file" (fun () -> Sys.file_exists f); + show "filepath_exists on existing file" (fun () -> Sys.filepath_exists f); + + (* Non-existent file (ENOENT) *) + let nf = "does_not_exist.txt" in + show "file_exists on nonexistent file" (fun () -> Sys.file_exists nf); + show "filepath_exists on nonexistent file" (fun () -> Sys.filepath_exists nf); + + (* Path component that is not a directory (ENOTDIR) *) + let notdir = "notadir.txt" in + writefile notdir "some content"; + let bad_path = Filename.concat notdir "child" in + show "file_exists with ENOTDIR" (fun () -> Sys.file_exists bad_path); + show "filepath_exists with ENOTDIR" (fun () -> Sys.filepath_exists bad_path); + + (* Unreadable directory (EACCES) *) + let dir = "noaccess_dir" in + let inner = Filename.concat dir "inner" in + + (* In case there's some leftover from a previous failed/crashed run *) + if Sys.file_exists dir + then begin + Unix.chmod dir 0o755; + safe_remove inner; + safe_rmdir dir; + end; + + Sys.mkdir dir 0o755; + writefile inner "some content"; + Unix.chmod dir 0o000; + show "file_exists with EACCES" (fun () -> Sys.file_exists inner); + show "filepath_exists with EACCES" (fun () -> Sys.filepath_exists inner); + Unix.chmod dir 0o755; + safe_remove inner; + safe_rmdir dir; + + (* Pathname is longer than NAME_MAX (ENAMETOOLONG) *) + let too_long_pathname = String.make 256 'c' in + show "file_exists with ENAMETOOLONG" (fun () -> Sys.file_exists too_long_pathname); + show "filepath_exists with ENAMETOOLONG" + ~expect_either:[ + too_long_pathname ^": File name too long"; + too_long_pathname ^": Filename too long" + ] + (fun () -> Sys.filepath_exists too_long_pathname); diff --git a/testsuite/tests/lib-sys/file_exists.reference b/testsuite/tests/lib-sys/file_exists.reference new file mode 100644 index 000000000000..c832c1dcb519 --- /dev/null +++ b/testsuite/tests/lib-sys/file_exists.reference @@ -0,0 +1,10 @@ +file_exists on existing file: true +filepath_exists on existing file: true +file_exists on nonexistent file: false +filepath_exists on nonexistent file: false +file_exists with ENOTDIR: false +filepath_exists with ENOTDIR: false +file_exists with EACCES: false +filepath_exists with EACCES: Sys_error: noaccess_dir/inner: Permission denied +file_exists with ENAMETOOLONG: false +filepath_exists with ENAMETOOLONG: Sys_error: $EXPECTED diff --git a/testsuite/tests/lib-sys/signal.ml b/testsuite/tests/lib-sys/signal.ml index 33b9371f90a7..8a355f6578cd 100644 --- a/testsuite/tests/lib-sys/signal.ml +++ b/testsuite/tests/lib-sys/signal.ml @@ -27,11 +27,6 @@ let () = assert (x == true); (* Should trigger signal_handle for sigwinch *) r := false; - Sys.set_signal Sys.sigio (Signal_handle (fun _ -> r := true)); - Unix.kill (Unix.getpid ()) Sys.sigio; - let x = !r in - assert (x == true); (* Should trigger signal_handle for sigio *) - (* Signals should map to POSIX standard names *) let signals = [(sighup, "SIGHUP"); (sigint, "SIGINT"); diff --git a/testsuite/tests/lib-sys/signal_sigio.ml b/testsuite/tests/lib-sys/signal_sigio.ml new file mode 100644 index 000000000000..7f4f4ac82d2c --- /dev/null +++ b/testsuite/tests/lib-sys/signal_sigio.ml @@ -0,0 +1,15 @@ +(* TEST + include unix; + hasunix; + not beos_haiku; + not windows; + native; +*) +open Sys + +let () = + let r = ref false in + Sys.set_signal Sys.sigio (Signal_handle (fun _ -> r := true)); + Unix.kill (Unix.getpid ()) Sys.sigio; + let x = !r in + assert (x == true); (* Should trigger signal_handle for sigio *) diff --git a/testsuite/tests/lib-systhreads/testpreempt.ml b/testsuite/tests/lib-systhreads/testpreempt.ml index 4c222334d921..703cf9c4d966 100644 --- a/testsuite/tests/lib-systhreads/testpreempt.ml +++ b/testsuite/tests/lib-systhreads/testpreempt.ml @@ -1,12 +1,6 @@ (* TEST include systhreads; hassysthreads; - (* - On Windows, we use Sleep(0) for triggering preemption of threads. - However, this does not seem very reliable, so that this test fails - on some Windows configurations. See GPR #1533. - *) - not target-windows; { bytecode; }{ diff --git a/testsuite/tests/lib-uchar/test.ml b/testsuite/tests/lib-uchar/test.ml index 7663295c0065..0ba7c6223777 100644 --- a/testsuite/tests/lib-uchar/test.ml +++ b/testsuite/tests/lib-uchar/test.ml @@ -37,8 +37,36 @@ let test_is_valid () = assert (not (Uchar.is_valid max_int)); () +let test_is_ascii () = + assert (Uchar.is_ascii Uchar.min); + assert (Uchar.is_ascii (Uchar.of_int 0x007F)); + assert (not (Uchar.is_ascii (Uchar.of_int 0x0080))); + assert (not (Uchar.is_ascii Uchar.max)); + () + +let test_ascii_to_char () = + assert (Uchar.ascii_to_char Uchar.min = '\x00'); + assert (Uchar.ascii_to_char (Uchar.of_int 0x007F) = '\x7F'); + assert_raise_invalid_argument Uchar.ascii_to_char (Uchar.of_int 0x0080); + assert_raise_invalid_argument Uchar.ascii_to_char Uchar.max; + () + let char_max = Uchar.of_int 0x00FF +let test_is_latin1 () = + assert (Uchar.(is_latin1 Uchar.min)); + assert (Uchar.(is_latin1 char_max)); + assert (Uchar.(not (is_latin1 (of_int 0x0100)))); + assert (not (Uchar.is_latin1 Uchar.max)); + () + +let test_latin1_to_char () = + assert (Uchar.(latin1_to_char min) = '\x00'); + assert (Uchar.(latin1_to_char char_max) = '\xFF'); + assert_raise_invalid_argument Uchar.latin1_to_char (Uchar.succ char_max); + assert_raise_invalid_argument Uchar.latin1_to_char Uchar.max; + () + let test_is_char () = assert (Uchar.(is_char Uchar.min)); assert (Uchar.(is_char char_max)); @@ -121,6 +149,10 @@ let tests () = test_succ (); test_pred (); test_is_valid (); + test_is_ascii (); + test_ascii_to_char (); + test_is_latin1 (); + test_latin1_to_char (); test_is_char (); test_of_char (); test_to_char (); diff --git a/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.ml b/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.ml new file mode 100644 index 000000000000..71e4a46cb538 --- /dev/null +++ b/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.ml @@ -0,0 +1,25 @@ +(* TEST + include unix; + modules = "recvfrom.ml"; + beos_haiku; + { + bytecode; + }{ + native; + } +*) +open Recvfrom + +let () = + let server_path = "ocaml-test-socket-haiku" in + ensure_no_file server_path; + at_exit (fun () -> ensure_no_file server_path); + with_bound_socket server_path (fun server_addr server_socket -> + (* path socket, just reuse server addr *) + test_sender ~client_socket:server_socket ~server_socket ~server_addr ~client_addr:server_addr; + + (* abstract socket *) + with_bound_socket "\x00123fe" (fun client_addr client_socket -> + test_sender ~client_socket ~server_socket ~server_addr ~client_addr + ); + ) diff --git a/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.reference b/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.reference new file mode 100644 index 000000000000..c0328c1c1933 --- /dev/null +++ b/testsuite/tests/lib-unix/unix-socket/recvfrom_haiku.reference @@ -0,0 +1,2 @@ +"ocaml-test-socket-haiku" as "ocaml-test-socket-haiku": OK +"\000123fe" as "\000123fe": OK diff --git a/testsuite/tests/lib-unix/unix-socket/recvfrom_unix.ml b/testsuite/tests/lib-unix/unix-socket/recvfrom_unix.ml index 23cdf2674715..c771e91e48fb 100644 --- a/testsuite/tests/lib-unix/unix-socket/recvfrom_unix.ml +++ b/testsuite/tests/lib-unix/unix-socket/recvfrom_unix.ml @@ -3,6 +3,7 @@ modules = "recvfrom.ml"; hasunix; not windows; + not beos_haiku; { bytecode; }{ diff --git a/testsuite/tests/lib-unix/win-select/test.ml b/testsuite/tests/lib-unix/win-select/test.ml index 6e1e60498ab4..df938e5e5b44 100644 --- a/testsuite/tests/lib-unix/win-select/test.ml +++ b/testsuite/tests/lib-unix/win-select/test.ml @@ -27,3 +27,75 @@ let () = close pr; close pw; close s1; close s2 + +let () = + let server = socket PF_INET SOCK_STREAM 0 in + bind server (ADDR_INET (inet_addr_loopback, 0)); + listen server 1; + let port = + match getsockname server with + | ADDR_INET (_, port) -> port + | _ -> assert false + in + let client = socket PF_INET SOCK_STREAM 0 in + connect client (ADDR_INET (inet_addr_loopback, port)); + let accepted, _ = accept server in + let pr, pw = pipe () in + + begin match select [pr; client] [client] [] 0.5 with + | _, [fd], _ when fd == client -> + Printf.printf "SUCCESS: Socket uses the right per-list result.\n" + | _ -> + Printf.printf "BUG REPRODUCED: Wrong write result.\n" + | exception Failure s when s = "select.c: original file handle not found" -> + Printf.printf "BUG REPRODUCED: Socket uses an index from another list.\n" + end; + + close pr; close pw; + close accepted; close client; close server + +let () = + let server = socket PF_INET SOCK_STREAM 0 in + bind server (ADDR_INET (inet_addr_loopback, 0)); + listen server 1; + let port = + match getsockname server with + | ADDR_INET (_, port) -> port + | _ -> assert false + in + let client = socket PF_INET SOCK_STREAM 0 in + connect client (ADDR_INET (inet_addr_loopback, port)); + let accepted, _ = accept server in + let decoy = socket PF_INET SOCK_STREAM 0 in + bind decoy (ADDR_INET (inet_addr_loopback, 0)); + listen decoy 1; + let pr, pw = pipe () in + (* [client]'s query incorrectly retains index 1 from [readfds]. Put a + non-writable listening socket at index 1 in [writefds], so the stale index + returns the wrong descriptor instead of being out of bounds. *) + begin match select [pr; client] [client; decoy] [] 0.5 with + | _, [fd], _ when fd == client -> + Printf.printf "SUCCESS: Socket is not confused with another descriptor.\n" + | _, [fd], _ when fd == decoy -> + Printf.printf "BUG REPRODUCED: Wrong write descriptor returned.\n" + | _ -> + Printf.printf "BUG REPRODUCED: Unexpected write result.\n" + end; + close pr; close pw; + close decoy; + close accepted; close client; close server + +let () = + let pr, pw = pipe () in + let path = Filename.temp_file "win-select" ".tmp" in + let file = openfile path [O_RDONLY] 0 in + + begin match select [pr; pr; file] [] [] 0.5 with + | [fd], _, _ when fd == file -> + Printf.printf "SUCCESS: Descriptor after a duplicate is mapped correctly.\n" + | _ -> + Printf.printf "BUG REPRODUCED: Duplicate changed a result index.\n" + end; + + close file; unlink path; + close pr; close pw diff --git a/testsuite/tests/lib-unix/win-select/test.reference b/testsuite/tests/lib-unix/win-select/test.reference index 6bebbba66fec..227f6b10ac8f 100644 --- a/testsuite/tests/lib-unix/win-select/test.reference +++ b/testsuite/tests/lib-unix/win-select/test.reference @@ -1 +1,4 @@ SUCCESS: Pipe handle is still tracked. +SUCCESS: Socket uses the right per-list result. +SUCCESS: Socket is not confused with another descriptor. +SUCCESS: Descriptor after a duplicate is mapped correctly. diff --git a/testsuite/tests/misc/pool_fragment.ml b/testsuite/tests/misc/pool_fragment.ml new file mode 100644 index 000000000000..4063c6b99b96 --- /dev/null +++ b/testsuite/tests/misc/pool_fragment.ml @@ -0,0 +1,134 @@ +(* TEST *) +type t = unit array + +let empty = [||] + +let alloc words : t = + assert (words > 1) ; + let n = words - 1 in + Array.make n () + +let pool_wsize = 4096 + +let pool_header_wsize = 4 + +let minor_heap_size = Gc.(get ()).minor_heap_size + +let pools_per_minor_heap = minor_heap_size / (pool_wsize - pool_header_wsize) + +let sizeclasses = + [ 2 + ; 3 + ; 4 + ; 5 + ; 6 + ; 7 + ; 8 + ; 10 + ; 12 + ; 14 + ; 16 + ; 17 + ; 19 + ; 22 + ; 25 + ; 28 + ; 32 + ; 33 + ; 37 + ; 42 + ; 47 + ; 53 + ; 59 + ; 65 + ; 73 + ; 81 + ; 89 + ; 99 + ; 108 + ; 118 + ; 128 ] + +let repeat = 20 + +let keep = + Array.init repeat (fun _ -> + Array.make_matrix List.(length sizeclasses) pools_per_minor_heap empty ) + +let fragment_sizeclasses () = + let fragment_sizeclass j sizeclass_idx sizeclass = + let n = minor_heap_size / sizeclass in + let pool_entries = (pool_wsize - pool_header_wsize) / sizeclass in + (* this will trigger an implicit minor GC when n > 256 *) + let all = Array.init n (fun _ -> alloc sizeclass) in + for i = 1 to pools_per_minor_heap do + keep.(j).(sizeclass_idx).(i - 1) <- all.((i * pool_entries) - 1) + done + (* [all] becomes freeable here *) + in + let fragment_sizeclass sizeclass_idx sizeclass = + for j = 0 to repeat - 1 do + fragment_sizeclass j sizeclass_idx sizeclass + done + in + sizeclasses |> List.iteri fragment_sizeclass + +let print_delta gc0 gc1 reachable_words = + let delta_top_heap_words = gc1.Gc.top_heap_words - gc0.Gc.top_heap_words in + let delta_heap_words = gc1.Gc.heap_words - gc0.Gc.heap_words in + let delta_frag_words = gc1.Gc.fragments - gc0.Gc.fragments in + Printf.printf + "+top_heap_words: %d, +heap_words: %d, +reachable_words: %d, +frag_words: \ + %d, ratio: %.2f\n" + delta_top_heap_words delta_heap_words reachable_words delta_frag_words + (float_of_int delta_heap_words /. float_of_int reachable_words) + +(* for easier comparison with OCaml 4 turn off deprecation alerts on Gc.stat. + Gc.quick_stat on OCaml 4 would set live_words to 0, so it cannot be used. + *) +[@@@alert "-deprecated"] + +let full_major_and_top_ratio () = + Gc.full_major () ; + Gc.full_major () ; + let gc = Gc.stat () in + (* we're interested in the top memory usage here, since this can lead to OOM *) + float_of_int gc.top_heap_words /. float_of_int gc.live_words + +let compact_and_ratio () = + Gc.compact () ; + Gc.compact () ; + let gc = Gc.stat () in + (* compaction can't decrease top_heap_words, just heap_words *) + float_of_int gc.heap_words /. float_of_int gc.live_words + +(* See c89bff11ab944e868413f446e1444577e7f6cdbb *) +let triage_msg = "Have you changed the GC?" +let triage_msg_compact = "Have you changed the GC compactor?" + +let () = + (* disable automatic compaction for a fairer comparison with OCaml 4 *) + Gc.(set {(get ()) with max_overhead= 1000000}) ; + fragment_sizeclasses () ; + let ratio = full_major_and_top_ratio () in + (* if you've changed the GC and confirmed that the higher ratio is + an expected and acceptable trade-off then tweak this constant *) + if ratio > 25. then begin + Gc.print_stat stdout ; + Printf.printf "\n[!] Top heap size to live words ratio is too high: %.2f.\n" + ratio; + print_endline triage_msg + end + else print_endline "top_heap_words/live_words: OK" ; + let ratio = compact_and_ratio () in + (* This is expected to be around 1, so this is not expected to fail. + There is some memory that cannot freed, so it isn't exactly 1. + *) + if ratio > 3. then begin + Gc.print_stat stdout ; + Printf.printf + "\n[!] Heap size after compaction to live words ratio is too high: %.2f\n" + ratio; + print_endline triage_msg_compact + end + else print_endline "\ncompact: OK" diff --git a/testsuite/tests/misc/pool_fragment.reference b/testsuite/tests/misc/pool_fragment.reference new file mode 100644 index 000000000000..b7e71a91702e --- /dev/null +++ b/testsuite/tests/misc/pool_fragment.reference @@ -0,0 +1,3 @@ +top_heap_words/live_words: OK + +compact: OK diff --git a/testsuite/tests/parse-errors/underscore.compilers.reference b/testsuite/tests/parse-errors/underscore.compilers.reference new file mode 100644 index 000000000000..5c545fcf80e4 --- /dev/null +++ b/testsuite/tests/parse-errors/underscore.compilers.reference @@ -0,0 +1,127 @@ +- : int = 1 +val h : int -> 'a -> 'a = +val g : _:'a -> 'a = +- : int = 3 +val o : ?_:int -> unit -> int = +- : int = 5 +module type S = sig end +module F : S -> sig end +Line 5, characters 8-9: +5 | let x = _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 1-2: +2 | (_, 0);; + ^ +Error: Uninterpreted expression wildcard _. +type r = { a : int; } +Line 2, characters 6-7: +2 | { a = _ };; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 4-5: +2 | 1 + _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 3-4: +2 | if _ then 0 else 1;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 1-2: +2 | (_ : int);; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 10-11: +2 | fun () -> _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 0-1: +2 | _.a;; + ^ +Error: Uninterpreted expression wildcard _. +Line 5, characters 0-1: +5 | _ 0;; + ^ +Error: Uninterpreted expression wildcard _. +val f : 'a -> 'a = +Line 2, characters 2-3: +2 | f _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 5-6: +2 | Some _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 5-6: +2 | lazy _;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 5-6: +2 | f ~x:_;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 3-4: +2 | g ~_;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 5-6: +2 | g ~_:_;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 3-4: +2 | o ?_;; + ^ +Error: Uninterpreted expression wildcard _. +Line 2, characters 5-6: +2 | o ?_:_;; + ^ +Error: Uninterpreted expression wildcard _. +Line 4, characters 11-12: +4 | module M = _;; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 13-14: +2 | module N = F(_);; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 12-13: +2 | module O = (_ : S);; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 25-26: +2 | module P = functor () -> _;; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 8-9: +2 | include _;; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 5-6: +2 | open _;; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 31-32: +2 | module type Q = module type of _;; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 16-17: +2 | let p = (module _ : S);; + ^ +Error: Uninterpreted module wildcard _. +Line 2, characters 23-24: +2 | let q = let module L = _ in ();; + ^ +Error: Uninterpreted module wildcard _. +Line 4, characters 9-10: +4 | let x = ~_;; + ^ +Error: Syntax error +Line 2, characters 6-7: +2 | f ~ _ : 3;; + ^ +Error: Syntax error +Line 2, characters 13-14: +2 | module R = F _;; + ^ +Error: Syntax error + diff --git a/testsuite/tests/parse-errors/underscore.ml b/testsuite/tests/parse-errors/underscore.ml new file mode 100644 index 000000000000..23607c8bb233 --- /dev/null +++ b/testsuite/tests/parse-errors/underscore.ml @@ -0,0 +1,99 @@ +(* TEST + toplevel; +*) + +(* Record the treatment of the wildcard "_" in expression positions. *) + +(* Section 1: forms involving "_" which are valid. Note that the lexer + already accepts "_" as a label name in the unspaced forms "~_:" and + "?_:". *) + +let _ = 1;; + +let h (_ : int) (y : _) = y;; + +let g ~_:x = x;; + +g ~_:3;; + +let o ?_:(x = 0) () = x;; + +o ?_:(Some 5) ();; + +module type S = sig end;; + +module F (_ : S) = struct end;; + +module _ = struct end;; + +(* Section 2: "_" where a general expression can start. The parser + recognizes these forms in order to report an ad hoc error. *) + +let x = _;; + +(_, 0);; + +type r = { a : int };; + +{ a = _ };; + +1 + _;; + +if _ then 0 else 1;; + +(_ : int);; + +fun () -> _;; + +_.a;; + +(* Section 3: "_" where only a simple expression is allowed + (function-argument positions). *) + +_ 0;; + +let f x = x;; + +f _;; + +Some _;; + +lazy _;; + +f ~x:_;; + +g ~_;; + +g ~_:_;; + +o ?_;; + +o ?_:_;; + +(* Section 4: "_" where a module expression is allowed. *) + +module M = _;; + +module N = F(_);; + +module O = (_ : S);; + +module P = functor () -> _;; + +include _;; + +open _;; + +module type Q = module type of _;; + +let p = (module _ : S);; + +let q = let module L = _ in ();; + +(* Section 5: forms which are always syntax errors. *) + +let x = ~_;; + +f ~ _ : 3;; + +module R = F _;; diff --git a/testsuite/tests/parsetree/source.ml b/testsuite/tests/parsetree/source.ml index 30b67896120a..8b5bcd5e87b0 100644 --- a/testsuite/tests/parsetree/source.ml +++ b/testsuite/tests/parsetree/source.ml @@ -7559,3 +7559,16 @@ let f = function (module M : (A with type t = int [@a])) -> () (* 5.5 Features *) type t = external "foo" + +(* Pexp_hole *) +let _ = f _ ~_ ?_ ~l:_ ?o:_ ~_:_ ?_:_;; +let _ = (_ : int);; +let _ = _ 0;; +let _ = _.l <- _;; + +(* Pmod_hole *) +module Hole = _;; +module Hole' = F(_)(_ : S)(struct end);; +include _;; +open _;; +let _ = (module _ : S);; diff --git a/testsuite/tests/parsing/extensions.compilers.reference b/testsuite/tests/parsing/extensions.compilers.reference index 745bfbf5d703..e41c2f28f827 100644 --- a/testsuite/tests/parsing/extensions.compilers.reference +++ b/testsuite/tests/parsing/extensions.compilers.reference @@ -321,6 +321,47 @@ ] ] ] + structure_item (extensions.ml[27,631+0]..[27,631+27]) + Pstr_extension "foo" + [ + structure_item (extensions.ml[27,631+7]..[27,631+26]) + Pstr_eval + expression (extensions.ml[27,631+7]..[27,631+26]) + Pexp_apply + expression (extensions.ml[27,631+7]..[27,631+8]) + Pexp_hole + [ + + Labelled "_" + expression (extensions.ml[27,631+10]..[27,631+11]) + Pexp_hole + + Labelled "_" + expression (extensions.ml[27,631+15]..[27,631+16]) + Pexp_hole + + Optional "_" + expression (extensions.ml[27,631+18]..[27,631+19]) + Pexp_hole + + Optional "_" + expression (extensions.ml[27,631+23]..[27,631+24]) + Pexp_hole + + Nolabel + expression (extensions.ml[27,631+25]..[27,631+26]) + Pexp_hole + ] + ] + structure_item (extensions.ml[29,660+0]..[29,660+20]) + Pstr_extension "foo" + [ + structure_item (extensions.ml[29,660+7]..[29,660+19]) + Pstr_module + "M" (extensions.ml[29,660+14]..[29,660+15]) + module_expr (extensions.ml[29,660+18]..[29,660+19]) + Pmod_hole + ] ] File "extensions.ml", line 9, characters 3-6: diff --git a/testsuite/tests/parsing/extensions.ml b/testsuite/tests/parsing/extensions.ml index b42570c01249..6a30fd35aec7 100644 --- a/testsuite/tests/parsing/extensions.ml +++ b/testsuite/tests/parsing/extensions.ml @@ -24,6 +24,10 @@ let [%foo: include S with type t = t ] : [%foo: val x : t val y : t] = [%foo: type t = t ] +[%%foo _ ~_ ~_:_ ?_ ?_:_ _] + +[%%foo module M = _] + (* TEST flags = "-dparsetree"; ocamlc_byte_exit_status = "2"; diff --git a/testsuite/tests/parsing/hole.compilers.reference b/testsuite/tests/parsing/hole.compilers.reference new file mode 100644 index 000000000000..809da5df4420 --- /dev/null +++ b/testsuite/tests/parsing/hole.compilers.reference @@ -0,0 +1,218 @@ +[ + structure_item + Pstr_value Nonrec + [ + + pattern + Ppat_any + expression + Pexp_hole + ] + structure_item + Pstr_eval + expression + Pexp_apply + expression + Pexp_ident "f" + [ + + Nolabel + expression + Pexp_hole + + Nolabel + expression + Pexp_constant + constant + PConst_int (0,None) + ] + structure_item + Pstr_eval + expression + Pexp_apply + expression + Pexp_hole + [ + + Nolabel + expression + Pexp_constant + constant + PConst_int (0,None) + ] + structure_item + Pstr_eval + expression + Pexp_field + expression + Pexp_hole + "a" + structure_item + Pstr_eval + expression + Pexp_send "m" + expression + Pexp_hole + structure_item + Pstr_eval + expression + Pexp_constraint + expression + Pexp_hole + core_type + Ptyp_constr "int" + [] + structure_item + Pstr_eval + expression + Pexp_tuple + [ + None + expression + Pexp_hole + None + expression + Pexp_hole + ] + structure_item + Pstr_eval + expression + Pexp_construct "Some" + Some + expression + Pexp_hole + structure_item + Pstr_eval + expression + Pexp_lazy + expression + Pexp_hole + structure_item + Pstr_eval + expression + Pexp_apply + expression + Pexp_ident "+" + [ + + Nolabel + expression + Pexp_constant + constant + PConst_int (1,None) + + Nolabel + expression + Pexp_hole + ] + structure_item + Pstr_eval + expression + Pexp_apply + expression + Pexp_ident "f" + [ + + Labelled "_" + expression + Pexp_hole + + Optional "_" + expression + Pexp_hole + + Labelled "_" + expression + Pexp_hole + + Optional "_" + expression + Pexp_hole + ] + structure_item + Pstr_module + "M" + module_expr + Pmod_hole + structure_item + Pstr_module + "N" + module_expr + Pmod_apply + module_expr + Pmod_hole + module_expr + Pmod_ident "M" + structure_item + Pstr_module + "O" + module_expr + Pmod_apply_unit + module_expr + Pmod_hole + structure_item + Pstr_module + "P" + module_expr + Pmod_apply + module_expr + Pmod_ident "F" + module_expr + Pmod_hole + structure_item + Pstr_module + "Q" + module_expr + Pmod_constraint + module_expr + Pmod_hole + module_type + Pmty_signature + [] + structure_item + Pstr_module + "R" + module_expr + Pmod_functor () + module_expr + Pmod_hole + structure_item + Pstr_include module_expr + Pmod_hole + structure_item + Pstr_open Fresh + module_expr + Pmod_hole + structure_item + Pstr_value Nonrec + [ + + pattern + Ppat_any + expression + Pexp_pack + module_expr + Pmod_hole + Some + package_type "S" + [] + ] + structure_item + Pstr_value Nonrec + [ + + pattern + Ppat_any + expression + Pexp_struct_item + structure_item + Pstr_module + "L" + module_expr + Pmod_hole + expression + Pexp_construct "()" + None + ] +] + diff --git a/testsuite/tests/parsing/hole.ml b/testsuite/tests/parsing/hole.ml new file mode 100644 index 000000000000..ef3984ca98c0 --- /dev/null +++ b/testsuite/tests/parsing/hole.ml @@ -0,0 +1,35 @@ +(* TEST_BELOW *) + +(* "_" is a simple expression (Pexp_hole) *) +let _ = _;; +f _ 0;; +_ 0;; +_.a;; +_ # m;; +(_ : int);; +(_, _);; +Some _;; +lazy _;; +1 + _;; + +(* Labelled argument sugar *) +f ~_ ?_ ~_:_ ?_:_;; + +(* "_" is a module expression (Pmod_hole) *) +module M = _;; +module N = _(M);; +module O = _();; +module P = F(_);; +module Q = (_ : sig end);; +module R = functor () -> _;; +include _;; +open _;; +let _ = (module _ : S);; +let _ = let module L = _ in ();; + +(* TEST + flags = "-dparsetree -dno-locations -stop-after parsing"; + setup-ocamlc.byte-build-env; + ocamlc.byte; + check-ocamlc.byte-output; +*) diff --git a/testsuite/tests/typeopt/partial_gadt.ml b/testsuite/tests/typeopt/partial_gadt.ml new file mode 100644 index 000000000000..892051f71d1f --- /dev/null +++ b/testsuite/tests/typeopt/partial_gadt.ml @@ -0,0 +1,96 @@ +(* TEST +flags = "-dlambda -dno-locations -dcanonical-ids"; +expect; +*) + +(* Test that we do not use local equation introduced by partial matching when computing + the value kinds of function parameters *) + +[@@@warning "-8"] + +type 'a rep = Float : float rep | Int : int rep +[%%expect {| +0 +0 +type 'a rep = Float : float rep | Int : int rep +|}] + +(** Expected kind [int -> any -> float]: + Since the match on [Float] can fail, one cannot use the equation [a = Float] + to infer the kind [float] for [a]. +*) +let curried : type a. a rep -> a -> float = fun Float a -> a +. 1. +[%%expect {| +(let + (curried/0 = + (function param/0[int] a/0 : float + (if param/0 + (raise (makeblock 0 (global Match_failure/0!) [0: "" 1 48])) + (+. a/0 1.)))) + (apply (field_mut 1 (global Toploop!)) "curried" curried/0)) +val curried : 'a rep -> 'a -> float = +|}] + +(** Expected kind [any -> any -> float]: + The [Type.Equal] pattern is total, however the default expression + can raise and thus the pattern match in + {[ + match assert false with + | Type.Equal -> ... + ]} + fails to account for the exception case. + Thus once again, we cannot use the equation [a = Float] to infer the kind + [float] for [a]. +*) +let opt (type a) ?p:(Type.Equal:(a,float) Type.eq=assert false) (x:a) = 1. +. x +[%%expect {| +(let + (opt/0 = + (function *opt*/0 x/0 : float + (let + (*match*/0 = + (if *opt*/0 (field_imm 0 *opt*/0) + (raise (makeblock 0 (global Assert_failure/0!) [0: "" 1 50])))) + (+. 1. x/0)))) + (apply (field_mut 1 (global Toploop!)) "opt" opt/0)) +val opt : ?p:('a, float) Type.eq -> 'a -> float = +|}] + +(** Expected kind: [int -> float -> float] + [Type.Equal] is an irrefutable pattern, we can safely use [a=float] to infer + [a:float]. +*) +let curried_ok : type a. (a,float) Type.eq -> a -> float = fun Type.Equal a -> a +. 1. +[%%expect {| +(let (curried_ok/0 = (function param/1[int] a/1[float] : float (+. a/1 1.))) + (apply (field_mut 1 (global Toploop!)) "curried_ok" curried_ok/0)) +val curried_ok : ('a, float) Type.eq -> 'a -> float = +|}] + + +(** Expected kind: [any -> int -> int -> any -> any -> float], + valid optimization [any -> int -> int -> float -> any -> float]. + The empty list pattern [[]] is an refutable pattern, we are currently refusing + to use any GADTs equation after this pattern. However, the equation [a=float] + is introduced by an irrefutable pattern without any dependencies on a refutable + pattern. We could thus theoretically use this equation to refine the inferred + kind for the function to [any -> int -> int -> float -> any]. + A good first approximation to implement this refinement would be to only freeze + the set of GADTs equation when we observe a refutable pattern argument which + adds a local equation. +*) +let curried_first : type a b. unit list -> (a,float) Type.eq -> b rep -> a -> b -> float = + fun [] Type.Equal Float a b -> a +. b +[%%expect {| +(let + (curried_first/0 = + (function param/2 param/3[int] param/4[int] a/2 b/0 : float + (if param/2 + (raise (makeblock 0 (global Match_failure/0!) [0: "" 2 6])) + (if param/4 + (raise (makeblock 0 (global Match_failure/0!) [0: "" 2 20])) + (+. a/2 b/0))))) + (apply (field_mut 1 (global Toploop!)) "curried_first" curried_first/0)) +val curried_first : + unit list -> ('a, float) Type.eq -> 'b rep -> 'a -> 'b -> float = +|}] diff --git a/testsuite/tests/typeopt/partial_gadt_native.compilers.reference b/testsuite/tests/typeopt/partial_gadt_native.compilers.reference new file mode 100644 index 000000000000..6614e8346339 --- /dev/null +++ b/testsuite/tests/typeopt/partial_gadt_native.compilers.reference @@ -0,0 +1,13 @@ +(seq + (let + (f/0 = + (function b/0[int] x/0[float] : float + (catch (if b/0 (exit 4 0 (+. x/0 x/0)) (exit 4 1 (opaque 0))) + with (4 param/0[int] param/1) + (if param/0 + (raise + (makeblock 0 (global Match_failure/0!) + [0: "partial_gadt_native.ml" 19 14])) + (+. param/1 1.))))) + (setfield_ptr(root-init) 0 (global Partial_gadt_native!) f/0)) + 0) diff --git a/testsuite/tests/typeopt/partial_gadt_native.ml b/testsuite/tests/typeopt/partial_gadt_native.ml new file mode 100644 index 000000000000..4a71c19a6924 --- /dev/null +++ b/testsuite/tests/typeopt/partial_gadt_native.ml @@ -0,0 +1,20 @@ +(* TEST +no-flambda; (* different lambda output *) +flags="-dlambda -dno-locations -dcanonical-ids"; +native; +*) + +[@@@warning "-8"] + +type 'a rep = Float : float rep | Int : int rep + +(** Expected kind: [ (int * any) -> float] + However, this kind will only manifest when trying to avoid a tuple + allocation. + Typically in this test, this kind appears in the exit condition of + the generated static catch, which should be + {[with param/0[int] param/1]} and not {[with param/0[int] param/1[float]]}. +*) +let f b x = + let[@local] tuple : type a. a rep * a -> float = fun (Float,a) -> a +. 1. in + if b then tuple (Float, (x +. x)) else tuple (Int, (Sys.opaque_identity 0)) diff --git a/testsuite/tests/typing-gadts/packed-module-recasting.ml b/testsuite/tests/typing-gadts/packed-module-recasting.ml index b593e5aefac5..c12ec7b1a2a4 100644 --- a/testsuite/tests/typing-gadts/packed-module-recasting.ml +++ b/testsuite/tests/typing-gadts/packed-module-recasting.ml @@ -356,7 +356,7 @@ val cast_via_module_type_under_equality2 : |}] (* Test from issue #10768 *) -type _ t +type !_ t module type S = sig type t end @@ -388,7 +388,7 @@ let get (type a) : a t -> (module S with type t = a) = fun index -> in unpack dispatch [%%expect {| -type _ t +type !_ t module type S = sig type t end type pack = Pack : 'a t * (module S with type t = 'a) -> pack val dispatch : pack list ref = {contents = []} diff --git a/testsuite/tests/typing-misc/hole.ml b/testsuite/tests/typing-misc/hole.ml new file mode 100644 index 000000000000..a9f8fa39f019 --- /dev/null +++ b/testsuite/tests/typing-misc/hole.ml @@ -0,0 +1,247 @@ +(* TEST + expect; +*) + +(* "_" parses as an expression (a "hole", Pexp_hole) anywhere a simple + expression is allowed, but is rejected by the type-checker: holes + are intended to be eliminated by a ppx rewriter. *) + +type r = { a : int } +let f (x : int) = x +let fx ~x = x +let g ~_:x = x +let o ?_:(x = 0) () = x +[%%expect{| +type r = { a : int; } +val f : int -> int = +val fx : x:'a -> 'a = +val g : _:'a -> 'a = +val o : ?_:int -> unit -> int = +|}] + +(* "~_:" and "?_:" lex as labels named "_", so these do not involve + holes at all. *) + +let ok = g ~_:3 +[%%expect{| +val ok : int = 3 +|}] + +let ok = o ?_:(Some 5) () +[%%expect{| +val ok : int = 5 +|}] + +(* Holes where a general expression can start. *) + +let x = _ +[%%expect{| +Line 1, characters 8-9: +1 | let x = _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let p = (_, 0) +[%%expect{| +Line 1, characters 9-10: +1 | let p = (_, 0) + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let r1 = { a = _ } +[%%expect{| +Line 1, characters 15-16: +1 | let r1 = { a = _ } + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let n = 1 + _ +[%%expect{| +Line 1, characters 12-13: +1 | let n = 1 + _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let c = if _ then 0 else 1 +[%%expect{| +Line 1, characters 11-12: +1 | let c = if _ then 0 else 1 + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let t = (_ : int) +[%%expect{| +Line 1, characters 9-10: +1 | let t = (_ : int) + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let fn = fun () -> _ +[%%expect{| +Line 1, characters 19-20: +1 | let fn = fun () -> _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let ap = _ 0 +[%%expect{| +Line 1, characters 9-10: +1 | let ap = _ 0 + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let fd = _.a +[%%expect{| +Line 1, characters 9-10: +1 | let fd = _.a + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +(* Holes in function-argument positions. *) + +let a1 = f _ +[%%expect{| +Line 1, characters 11-12: +1 | let a1 = f _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a2 = Some _ +[%%expect{| +Line 1, characters 14-15: +1 | let a2 = Some _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a3 = lazy _ +[%%expect{| +Line 1, characters 14-15: +1 | let a3 = lazy _ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a4 = fx ~x:_ +[%%expect{| +Line 1, characters 15-16: +1 | let a4 = fx ~x:_ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a5 = g ~_ +[%%expect{| +Line 1, characters 12-13: +1 | let a5 = g ~_ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a6 = g ~_:_ +[%%expect{| +Line 1, characters 14-15: +1 | let a6 = g ~_:_ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a7 = o ?_ +[%%expect{| +Line 1, characters 12-13: +1 | let a7 = o ?_ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +let a8 = o ?_:_ +[%%expect{| +Line 1, characters 14-15: +1 | let a8 = o ?_:_ + ^ +Error: Uninterpreted expression wildcard "_". +|}] + +(* "_" also parses as a module expression (a hole, Pmod_hole) and is + likewise rejected by the type-checker. *) + +module type S = sig end +module F (X : S) = struct end +[%%expect{| +module type S = sig end +module F : (X : S) -> sig end +|}] + +module M = _ +[%%expect{| +Line 1, characters 11-12: +1 | module M = _ + ^ +Error: Uninterpreted module wildcard "_". +|}] + +module N = F(_) +[%%expect{| +Line 1, characters 13-14: +1 | module N = F(_) + ^ +Error: Uninterpreted module wildcard "_". +|}] + +module O = (_ : S) +[%%expect{| +Line 1, characters 12-13: +1 | module O = (_ : S) + ^ +Error: Uninterpreted module wildcard "_". +|}] + +include _ +[%%expect{| +Line 1, characters 8-9: +1 | include _ + ^ +Error: Uninterpreted module wildcard "_". +|}] + +open _ +[%%expect{| +Line 1, characters 5-6: +1 | open _ + ^ +Error: Uninterpreted module wildcard "_". +|}] + +module type P = module type of _ +[%%expect{| +Line 1, characters 31-32: +1 | module type P = module type of _ + ^ +Error: Uninterpreted module wildcard "_". +|}] + +let x = (module _ : S) +[%%expect{| +Line 1, characters 16-17: +1 | let x = (module _ : S) + ^ +Error: Uninterpreted module wildcard "_". +|}] + +let y = let module L = _ in () +[%%expect{| +Line 1, characters 23-24: +1 | let y = let module L = _ in () + ^ +Error: Uninterpreted module wildcard "_". +|}] diff --git a/testsuite/tests/typing-misc/injectivity.ml b/testsuite/tests/typing-misc/injectivity.ml index 06aafc68e9e3..1b10d67b894c 100644 --- a/testsuite/tests/typing-misc/injectivity.ml +++ b/testsuite/tests/typing-misc/injectivity.ml @@ -536,3 +536,19 @@ Error: In this definition, expected parameter variances are not satisfied. The 1st type parameter was expected to be injective invariant, but it is invariant. |}] + + +module type S = sig type 'a t end +include (struct type 'a t = unit end : S) +let inj_t : type a b. (a t, b t) Type.eq -> (a, b) Type.eq = function Equal -> Equal +;; +[%%expect{| +module type S = sig type 'a t end +type 'a t +Line 3, characters 79-84: +3 | let inj_t : type a b. (a t, b t) Type.eq -> (a, b) Type.eq = function Equal -> Equal + ^^^^^ +Error: The constructor "Equal" has type "(a, a) Type.eq" + but an expression was expected of type "(a, b) Type.eq" + Type "a" is not compatible with type "b" +|}] diff --git a/testsuite/tests/typing-modules/module_type_substitution.ml b/testsuite/tests/typing-modules/module_type_substitution.ml index 26eb4cec2a59..f830b2b5222b 100644 --- a/testsuite/tests/typing-modules/module_type_substitution.ml +++ b/testsuite/tests/typing-modules/module_type_substitution.ml @@ -589,3 +589,21 @@ Error: In this "with" constraint, the new definition of "A" type t = int The type "bool" is not equal to the type "int" |}] + +(** with module type and arrow precedence *) + +module type S = sig + module type T + module type U = T +end + +module type U = S with module type T = S -> S +[%%expect {| +module type S = sig module type T module type U = T end +module type U = sig module type T = S -> S module type U = T end +|}] + +module type V = S with module type T := S -> S +[%%expect {| +module type V = sig module type U = S -> S end +|}] diff --git a/testsuite/tests/unicode/utf8_lexeme.ml b/testsuite/tests/unicode/utf8_lexeme.ml index efb28f85315c..2c20f60c396b 100644 --- a/testsuite/tests/unicode/utf8_lexeme.ml +++ b/testsuite/tests/unicode/utf8_lexeme.ml @@ -3,7 +3,7 @@ expect; *) -module Utf8 = Misc.Utf8_lexeme +module Utf8 = Utf8_lexeme type 'a mismatch = { output: 'a; expected: 'a } type test_result = (unit, (Utf8.t, Utf8.t) Result.t mismatch) result let test f input expected : test_result = @@ -11,7 +11,7 @@ let test f input expected : test_result = if output = expected then Ok () else Error { output; expected } [%%expect {| -module Utf8 = Misc.Utf8_lexeme +module Utf8 = Utf8_lexeme type 'a mismatch = { output : 'a; expected : 'a; } type test_result = (unit, (Utf8.t, Utf8.t) Result.t mismatch) result val test : diff --git a/testsuite/tests/utils/edit_distance.ml b/testsuite/tests/utils/edit_distance.ml index dd36db85ab4f..e9d4473891df 100644 --- a/testsuite/tests/utils/edit_distance.ml +++ b/testsuite/tests/utils/edit_distance.ml @@ -1,7 +1,7 @@ (* TEST include config; include testing; - binary_modules = "config build_path_prefix_map format_doc misc identifiable numbers"; + binary_modules = "config build_path_prefix_map format_doc utf8_lexeme misc identifiable numbers"; bytecode; *) diff --git a/testsuite/tests/utils/find_first_mono.ml b/testsuite/tests/utils/find_first_mono.ml index c00aba288b24..dc2a08c7e619 100644 --- a/testsuite/tests/utils/find_first_mono.ml +++ b/testsuite/tests/utils/find_first_mono.ml @@ -1,7 +1,7 @@ (* TEST include config; include testing; - binary_modules = "config build_path_prefix_map format_doc misc"; + binary_modules = "config build_path_prefix_map format_doc utf8_lexeme misc"; bytecode; *) diff --git a/testsuite/tests/utils/magic_number.ml b/testsuite/tests/utils/magic_number.ml index bfbf2206730d..e1004be0764e 100644 --- a/testsuite/tests/utils/magic_number.ml +++ b/testsuite/tests/utils/magic_number.ml @@ -1,6 +1,6 @@ (* TEST include config; - binary_modules = "config build_path_prefix_map format_doc misc"; + binary_modules = "config build_path_prefix_map format_doc utf8_lexeme misc"; bytecode; *) diff --git a/testsuite/tests/utils/overflow_detection.ml b/testsuite/tests/utils/overflow_detection.ml index 67f1bbf82ef2..43d1408effc8 100644 --- a/testsuite/tests/utils/overflow_detection.ml +++ b/testsuite/tests/utils/overflow_detection.ml @@ -1,7 +1,7 @@ (* TEST include config; include testing; - binary_modules = "config build_path_prefix_map format_doc misc identifiable numbers"; + binary_modules = "config build_path_prefix_map format_doc utf8_lexeme misc identifiable numbers"; bytecode; *) diff --git a/testsuite/tests/utils/test_strongly_connected_components.ml b/testsuite/tests/utils/test_strongly_connected_components.ml index d1a91968833a..353565e3670f 100644 --- a/testsuite/tests/utils/test_strongly_connected_components.ml +++ b/testsuite/tests/utils/test_strongly_connected_components.ml @@ -1,7 +1,7 @@ (* TEST include config; include testing; - binary_modules = "config build_path_prefix_map format_doc misc identifiable numbers strongly_connected_components"; + binary_modules = "config build_path_prefix_map format_doc utf8_lexeme misc identifiable numbers strongly_connected_components"; bytecode; *) diff --git a/tools/ocamlprof.ml b/tools/ocamlprof.ml index efd552695a90..2e8d2e1fcf42 100644 --- a/tools/ocamlprof.ml +++ b/tools/ocamlprof.ml @@ -305,6 +305,7 @@ and rw_exp iflag sexp = | Pexp_struct_item (si, exp) -> rewrite_str_item iflag si; rewrite_exp iflag exp + | Pexp_hole -> () and rewrite_ifbody iflag ghost sifbody = if !instr_if && not ghost then @@ -401,6 +402,7 @@ and rewrite_mod iflag smod = | Pmod_constraint(smod, _smty) -> rewrite_mod iflag smod | Pmod_unpack(sexp) -> rewrite_exp iflag sexp | Pmod_extension _ -> () + | Pmod_hole -> () and rewrite_str_item iflag item = match item.pstr_desc with diff --git a/typing/ctype.ml b/typing/ctype.ml index bfc482d33721..d86f90ac88bc 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -558,16 +558,6 @@ let without_assume_injective uenv f = (*** Checks for type definitions ***) -let rec in_current_module = function - | Path.Pident _ -> true - | Path.Pdot _ | Path.Papply _ -> false - | Path.Pextra_ty (p, _) -> in_current_module p - -let in_pervasives p = - in_current_module p && - try ignore (Env.find_type p Env.initial); true - with Not_found -> false - let is_datatype decl= match decl.type_kind with Type_record _ | Type_variant _ | Type_open | Type_external _ -> true @@ -2263,9 +2253,7 @@ let rec extract_package_modulo_subtype env ty = | _ -> raise Not_found let is_contractive env p = - try - let decl = Env.find_type p env in - in_pervasives p && decl.type_manifest = None || is_datatype decl + try is_datatype (Env.find_type p env) with Not_found -> false @@ -3557,8 +3545,7 @@ and unify3 uenv t1' t2' = unify_list uenv tl1 tl2 else if can_assume_injective uenv then without_assume_injective uenv (fun uenv -> unify_list uenv tl1 tl2) - else if in_current_module p1 (* || in_pervasives p1 *) - || List.exists + else if List.exists (expands_to_datatype (get_env uenv)) (List.map (fun a -> a.abbr_path) (Option.to_list (get_abbrev t1') @ diff --git a/typing/env.ml b/typing/env.ml index a1e649bd338e..7de052079679 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -2380,6 +2380,11 @@ let add_local_constraint path info env = { env with local_constraints = Path.Map.add path info env.local_constraints } +type local_equations = Types.type_declaration Path.Map.t +let freeze_local_equations env = env.local_constraints +let restrict_local_equations local_constraints env = + { env with local_constraints } + (* Non-lazy version of scrape_alias *) let scrape_alias t mty = mty |> Subst.Lazy.of_modtype |> scrape_alias t |> Subst.Lazy.force_modtype diff --git a/typing/env.mli b/typing/env.mli index a531a64de1bf..d5ae2ea97fbd 100644 --- a/typing/env.mli +++ b/typing/env.mli @@ -339,6 +339,10 @@ val add_class: Ident.t -> class_declaration -> t -> t val add_cltype: Ident.t -> class_type_declaration -> t -> t val add_local_constraint: Path.t -> type_declaration -> t -> t +type local_equations +val freeze_local_equations: t -> local_equations +val restrict_local_equations: local_equations -> t -> t + (* Insertion of persistent signatures *) (* [add_persistent_structure id env] is an environment such that diff --git a/typing/oprint.ml b/typing/oprint.ml index a68748f50959..845ccf42726d 100644 --- a/typing/oprint.ml +++ b/typing/oprint.ml @@ -39,7 +39,7 @@ let out_ident = ref print_ident let parenthesized_ident name = (List.mem name ["or"; "mod"; "land"; "lor"; "lxor"; "lsl"; "lsr"; "asr"]) - || not (Misc.Utf8_lexeme.is_valid_identifier name) + || not (Utf8_lexeme.is_valid_identifier name) let value_ident ppf name = if parenthesized_ident name then diff --git a/typing/typecore.ml b/typing/typecore.ml index ccfed92c43fb..d3af9757a89f 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -214,6 +214,7 @@ type error = | Optional_poly_param of string | Cannot_unify_tfunctor_to_tarrow of Errortrace.unification_error | Cannot_omit_tfunctor_argument of Ident.Unscoped.t * type_expr + | Unexpected_hole let not_principal fmt = @@ -3551,7 +3552,7 @@ let rec is_nonexpansive exp = is_nonexpansive body | Texp_apply(e, (_,Omitted ())::el) -> is_nonexpansive e && List.for_all is_nonexpansive_arg (List.map snd el) - | Texp_match(e, cases, _, _) -> + | Texp_match(e, cases, eff_cases, _) -> (* Not sure this is necessary, if [e] is nonexpansive then we shouldn't care if there are exception patterns. But the previous version enforced that there be none, so... *) @@ -3566,7 +3567,10 @@ let rec is_nonexpansive exp = (fun {c_lhs; c_guard; c_rhs} -> is_nonexpansive_opt c_guard && is_nonexpansive c_rhs && not (contains_exception_pat c_lhs) - ) cases + ) cases && + List.for_all + (fun {c_guard; c_rhs} -> + is_nonexpansive_opt c_guard && is_nonexpansive c_rhs) eff_cases | Texp_tuple el -> List.for_all (fun (_, e) -> is_nonexpansive e) el | Texp_construct( _, _, el) -> @@ -5609,6 +5613,9 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } + | Pexp_hole -> + Error.log_and_raise loc env Unexpected_hole + | Pexp_struct_item (si, e) -> let tv = newvar () in let delayed () = @@ -8755,6 +8762,9 @@ let report_error ~loc env = The module argument %a cannot be omitted in this application.@]" print_expanded func_ty Style.inline_code (Ident.Unscoped.name id_us) + | Unexpected_hole -> + Location.errorf ~loc + "Uninterpreted expression wildcard %a." Style.inline_code "_" let report_error ~loc env err = Printtyp.wrap_printing_env ~error:true env diff --git a/typing/typecore.mli b/typing/typecore.mli index 249ac3c81f2d..75c54e5b68e3 100644 --- a/typing/typecore.mli +++ b/typing/typecore.mli @@ -255,6 +255,7 @@ type error = | Optional_poly_param of string | Cannot_unify_tfunctor_to_tarrow of Errortrace.unification_error | Cannot_omit_tfunctor_argument of Ident.Unscoped.t * type_expr + | Unexpected_hole module Error : sig type exn += private In_context of Location.t * Env.t * error diff --git a/typing/typemod.ml b/typing/typemod.ml index 83d19dba0ef8..dab9a315d759 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -81,6 +81,7 @@ type error = | With_cannot_remove_packed_modtype of Path.t * module_type | Cannot_alias of Path.t | Val_in_structure + | Unexpected_hole exception Error_forward of Location.error exception Errors of Location.t * Typing_recovery.Error_set.t @@ -2600,6 +2601,8 @@ and type_module_aux ~alias ~strengthen ~funct_body anchor env smod = Shape.leaf_for_unpack () | Pmod_extension ext -> raise (Error_forward (Builtin_attributes.error_of_extension ext)) + | Pmod_hole -> + Error.log_and_raise smod.pmod_loc env Unexpected_hole and type_application loc ~strengthen ~funct_body env smod = let rec extract_application ~funct_body env sargs smod = @@ -3863,6 +3866,9 @@ let report_error ~loc _env = function Misc.print_see_manual manual_ref | Val_in_structure -> Location.errorf ~loc "Value declarations are only allowed in signatures" + | Unexpected_hole -> + Location.errorf ~loc + "Uninterpreted module wildcard %a." Style.inline_code "_" let report_error env ~loc err = Printtyp.wrap_printing_env ~error:true env diff --git a/typing/typemod.mli b/typing/typemod.mli index 81befd8937c7..fe4ac2548fbe 100644 --- a/typing/typemod.mli +++ b/typing/typemod.mli @@ -135,6 +135,7 @@ type error = | With_cannot_remove_packed_modtype of Path.t * module_type | Cannot_alias of Path.t | Val_in_structure + | Unexpected_hole exception Error_forward of Location.error exception Errors of Location.t * Typing_recovery.Error_set.t diff --git a/typing/typeopt.ml b/typing/typeopt.ml index 9f500d4d69a7..7751583cc3f6 100644 --- a/typing/typeopt.ml +++ b/typing/typeopt.ml @@ -190,6 +190,13 @@ let value_kind env ty = Pgenval end +let pattern_kind env_modifier pat = + match env_modifier with + | None -> value_kind pat.pat_env pat.pat_type + | Some local_constraints -> + let env = Env.restrict_local_equations local_constraints pat.pat_env in + value_kind env pat.pat_type + (** The compilation of the expression [lazy e] depends on the form of e: in some cases we optimize it into [let x = e in lazy x], evaluating [e] right now (if it is equivalent) and avoiding creating a thunk. diff --git a/typing/typeopt.mli b/typing/typeopt.mli index e72127ecbc67..99c6fd89ac58 100644 --- a/typing/typeopt.mli +++ b/typing/typeopt.mli @@ -28,7 +28,10 @@ val array_kind : Typedtree.expression -> Lambda.array_kind val array_pattern_kind : Typedtree.pattern -> Lambda.array_kind val bigarray_type_kind_and_layout : Env.t -> Types.type_expr -> Lambda.bigarray_kind * Lambda.bigarray_layout + val value_kind : Env.t -> Types.type_expr -> Lambda.value_kind +val pattern_kind: + Env.local_equations option -> Typedtree.pattern -> Lambda.value_kind (** [lazy_summary] describes how the expression [lazy e] must be compiled. *) type lazy_summary = diff --git a/typing/value_rec_check.ml b/typing/value_rec_check.ml index 9927839f3369..97f77b6cd7db 100644 --- a/typing/value_rec_check.ml +++ b/typing/value_rec_check.ml @@ -196,7 +196,10 @@ let classify_expression : Typedtree.expression -> sd = Dynamic | Texp_array _ -> - Static + begin match Typeopt.array_kind e with + | Pgenarray -> Dynamic + | Pfloatarray | Paddrarray | Pintarray -> Static + end | Texp_pack mexp -> classify_module_expression env mexp | Texp_function _ -> diff --git a/utils/misc.ml b/utils/misc.ml index a20ed75ba752..fbd5ef3cfbf5 100644 --- a/utils/misc.ml +++ b/utils/misc.ml @@ -295,316 +295,6 @@ let repeated_label l = in go Set.empty l -(** {1 Minimal support for Unicode characters in identifiers} *) - -module Utf8_lexeme = struct - - type t = string - - (* Non-ASCII letters that are allowed in identifiers (currently: Latin-9) *) - - type case = Upper of int | Lower of int - - let get_known_char c = - match Uchar.to_int c with - | 0xc0 (* À *) -> Some (Upper 0xe0 (* à *)) - | 0xe0 (* à *) -> Some (Lower 0xc0 (* À *)) - | 0xc1 (* Á *) -> Some (Upper 0xe1 (* á *)) - | 0xe1 (* á *) -> Some (Lower 0xc1 (* Á *)) - - | 0xc2 (*  *) -> Some (Upper 0xe2 (* â *)) - | 0xe2 (* â *) -> Some (Lower 0xc2 (*  *)) - | 0xc3 (* à *) -> Some (Upper 0xe3 (* ã *)) - | 0xe3 (* ã *) -> Some (Lower 0xc3 (* à *)) - - | 0xc4 (* Ä *) -> Some (Upper 0xe4 (* ä *)) - | 0xe4 (* ä *) -> Some (Lower 0xc4 (* Ä *)) - | 0xc5 (* Å *) -> Some (Upper 0xe5 (* å *)) - | 0xe5 (* å *) -> Some (Lower 0xc5 (* Å *)) - - | 0xc6 (* Æ *) -> Some (Upper 0xe6 (* æ *)) - | 0xe6 (* æ *) -> Some (Lower 0xc6 (* Æ *)) - | 0xc7 (* Ç *) -> Some (Upper 0xe7 (* ç *)) - | 0xe7 (* ç *) -> Some (Lower 0xc7 (* Ç *)) - - | 0xc8 (* È *) -> Some (Upper 0xe8 (* è *)) - | 0xe8 (* è *) -> Some (Lower 0xc8 (* È *)) - | 0xc9 (* É *) -> Some (Upper 0xe9 (* é *)) - | 0xe9 (* é *) -> Some (Lower 0xc9 (* É *)) - - | 0xca (* Ê *) -> Some (Upper 0xea (* ê *)) - | 0xea (* ê *) -> Some (Lower 0xca (* Ê *)) - | 0xcb (* Ë *) -> Some (Upper 0xeb (* ë *)) - | 0xeb (* ë *) -> Some (Lower 0xcb (* Ë *)) - - | 0xcc (* Ì *) -> Some (Upper 0xec (* ì *)) - | 0xec (* ì *) -> Some (Lower 0xcc (* Ì *)) - | 0xcd (* Í *) -> Some (Upper 0xed (* í *)) - | 0xed (* í *) -> Some (Lower 0xcd (* Í *)) - - | 0xce (* Î *) -> Some (Upper 0xee (* î *)) - | 0xee (* î *) -> Some (Lower 0xce (* Î *)) - | 0xcf (* Ï *) -> Some (Upper 0xef (* ï *)) - | 0xef (* ï *) -> Some (Lower 0xcf (* Ï *)) - - | 0xd0 (* Ð *) -> Some (Upper 0xf0 (* ð *)) - | 0xf0 (* ð *) -> Some (Lower 0xd0 (* Ð *)) - | 0xd1 (* Ñ *) -> Some (Upper 0xf1 (* ñ *)) - | 0xf1 (* ñ *) -> Some (Lower 0xd1 (* Ñ *)) - - | 0xd2 (* Ò *) -> Some (Upper 0xf2 (* ò *)) - | 0xf2 (* ò *) -> Some (Lower 0xd2 (* Ò *)) - | 0xd3 (* Ó *) -> Some (Upper 0xf3 (* ó *)) - | 0xf3 (* ó *) -> Some (Lower 0xd3 (* Ó *)) - - | 0xd4 (* Ô *) -> Some (Upper 0xf4 (* ô *)) - | 0xf4 (* ô *) -> Some (Lower 0xd4 (* Ô *)) - | 0xd5 (* Õ *) -> Some (Upper 0xf5 (* õ *)) - | 0xf5 (* õ *) -> Some (Lower 0xd5 (* Õ *)) - - | 0xd6 (* Ö *) -> Some (Upper 0xf6 (* ö *)) - | 0xf6 (* ö *) -> Some (Lower 0xd6 (* Ö *)) - | 0xd8 (* Ø *) -> Some (Upper 0xf8 (* ø *)) - | 0xf8 (* ø *) -> Some (Lower 0xd8 (* Ø *)) - - | 0xd9 (* Ù *) -> Some (Upper 0xf9 (* ù *)) - | 0xf9 (* ù *) -> Some (Lower 0xd9 (* Ù *)) - | 0xda (* Ú *) -> Some (Upper 0xfa (* ú *)) - | 0xfa (* ú *) -> Some (Lower 0xda (* Ú *)) - - | 0xdb (* Û *) -> Some (Upper 0xfb (* û *)) - | 0xfb (* û *) -> Some (Lower 0xdb (* Û *)) - | 0xdc (* Ü *) -> Some (Upper 0xfc (* ü *)) - | 0xfc (* ü *) -> Some (Lower 0xdc (* Ü *)) - - | 0xdd (* Ý *) -> Some (Upper 0xfd (* ý *)) - | 0xfd (* ý *) -> Some (Lower 0xdd (* Ý *)) - | 0xde (* Þ *) -> Some (Upper 0xfe (* þ *)) - | 0xfe (* þ *) -> Some (Lower 0xde (* Þ *)) - - | 0x160 (* Š *) -> Some (Upper 0x161 (* š *)) - | 0x161 (* š *) -> Some (Lower 0x160 (* Š *)) - | 0x17d (* Ž *) -> Some (Upper 0x17e (* ž *)) - | 0x17e (* ž *) -> Some (Lower 0x17d (* Ž *)) - - | 0x152 (* Œ *) -> Some (Upper 0x153 (* œ *)) - | 0x153 (* œ *) -> Some (Lower 0x152 (* Œ *)) - | 0x178 (* Ÿ *) -> Some (Upper 0xff (* ÿ *)) - | 0xff (* ÿ *) -> Some (Lower 0x178 (* Ÿ *)) - - | 0x1e9e (* ẞ *) -> Some (Upper 0xdf (* ß *)) - | 0xdf (* ß *) -> Some (Lower 0x1e9e (* ẞ *)) - | _ -> None - - (* NFD to NFC conversion table for the letters above *) - - let get_known_pair c1 n2 = - match Uchar.unsafe_to_char c1, Uchar.to_int n2 with - | 'A', 0x300 -> Some 0xc0 (* À *) | 'A', 0x301 -> Some 0xc1 (* Á *) - | 'A', 0x302 -> Some 0xc2 (*  *) | 'A', 0x303 -> Some 0xc3 (* à *) - | 'A', 0x308 -> Some 0xc4 (* Ä *) | 'A', 0x30a -> Some 0xc5 (* Å *) - | 'C', 0x327 -> Some 0xc7 (* Ç *) | 'E', 0x300 -> Some 0xc8 (* È *) - | 'E', 0x301 -> Some 0xc9 (* É *) | 'E', 0x302 -> Some 0xca (* Ê *) - | 'E', 0x308 -> Some 0xcb (* Ë *) | 'I', 0x300 -> Some 0xcc (* Ì *) - | 'I', 0x301 -> Some 0xcd (* Í *) | 'I', 0x302 -> Some 0xce (* Î *) - | 'I', 0x308 -> Some 0xcf (* Ï *) | 'N', 0x303 -> Some 0xd1 (* Ñ *) - | 'O', 0x300 -> Some 0xd2 (* Ò *) | 'O', 0x301 -> Some 0xd3 (* Ó *) - | 'O', 0x302 -> Some 0xd4 (* Ô *) | 'O', 0x303 -> Some 0xd5 (* Õ *) - | 'O', 0x308 -> Some 0xd6 (* Ö *) - | 'U', 0x300 -> Some 0xd9 (* Ù *) | 'U', 0x301 -> Some 0xda (* Ú *) - | 'U', 0x302 -> Some 0xdb (* Û *) | 'U', 0x308 -> Some 0xdc (* Ü *) - | 'Y', 0x301 -> Some 0xdd (* Ý *) | 'Y', 0x308 -> Some 0x178 (* Ÿ *) - | 'S', 0x30c -> Some 0x160 (* Š *) | 'Z', 0x30c -> Some 0x17d (* Ž *) - | 'a', 0x300 -> Some 0xe0 (* à *) | 'a', 0x301 -> Some 0xe1 (* á *) - | 'a', 0x302 -> Some 0xe2 (* â *) | 'a', 0x303 -> Some 0xe3 (* ã *) - | 'a', 0x308 -> Some 0xe4 (* ä *) | 'a', 0x30a -> Some 0xe5 (* å *) - | 'c', 0x327 -> Some 0xe7 (* ç *) | 'e', 0x300 -> Some 0xe8 (* è *) - | 'e', 0x301 -> Some 0xe9 (* é *) | 'e', 0x302 -> Some 0xea (* ê *) - | 'e', 0x308 -> Some 0xeb (* ë *) | 'i', 0x300 -> Some 0xec (* ì *) - | 'i', 0x301 -> Some 0xed (* í *) | 'i', 0x302 -> Some 0xee (* î *) - | 'i', 0x308 -> Some 0xef (* ï *) | 'n', 0x303 -> Some 0xf1 (* ñ *) - | 'o', 0x300 -> Some 0xf2 (* ò *) | 'o', 0x301 -> Some 0xf3 (* ó *) - | 'o', 0x302 -> Some 0xf4 (* ô *) | 'o', 0x303 -> Some 0xf5 (* õ *) - | 'o', 0x308 -> Some 0xf6 (* ö *) - | 'u', 0x300 -> Some 0xf9 (* ù *) | 'u', 0x301 -> Some 0xfa (* ú *) - | 'u', 0x302 -> Some 0xfb (* û *) | 'u', 0x308 -> Some 0xfc (* ü *) - | 'y', 0x301 -> Some 0xfd (* ý *) | 'y', 0x308 -> Some 0xff (* ÿ *) - | 's', 0x30c -> Some 0x161 (* š *) | 'z', 0x30c -> Some 0x17e (* ž *) - | _ -> None - - let is_valid_decode_and_char decode uchar = - Uchar.utf_decode_is_valid decode && uchar <> Uchar.rep - - let rec pair_normalize ~buf ~valid s ~prev i = - if i >= String.length s then begin - Buffer.add_utf_8_uchar buf prev; - valid - end else begin - let d = String.get_utf_8_uchar s i in - let u = Uchar.utf_decode_uchar d in - let valid = valid && is_valid_decode_and_char d u in - let i' = i + Uchar.utf_decode_length d in - match get_known_pair prev u with - | Some u' -> - let u' = Uchar.unsafe_of_int u' in - pair_normalize ~buf ~valid s ~prev:u' i' - | None -> - Buffer.add_utf_8_uchar buf prev; - pair_normalize ~buf ~valid s ~prev:u i' - end - - let normalize_map_first ?first s = - (* [first : Uchar.t -> Uchar.t] is an optional function to be - applied to the first character of [s] only.*) - if String.is_empty s then Ok "" - else - let only_ascii = String.for_all Char.Ascii.is_valid s in - (* get the first character of [s] *) - let d = String.get_utf_8_uchar s 0 in - let u0 = Uchar.utf_decode_uchar d in - let i0 = Uchar.utf_decode_length d in - let u0' = match first with None -> u0 - | Some transform -> transform u0 - in - if u0' = u0 && only_ascii then - (* If the first character is unchanged by the [first] transformation, - and the string is ascii-only, we can return it unchanged. *) - Ok s - else if only_ascii then begin - (* If the first character is changed but the rest - of the string is ascii-only, we can concatenate - the new first character with the rest. *) - let ulen = Uchar.utf_8_byte_length u0' in - let restlen = String.length s - i0 in - let res = Bytes.create (ulen + restlen) in - let ulen' = Bytes.set_utf_8_uchar res 0 u0' in - assert (ulen = ulen'); - BytesLabels.blit_string - ~src:s ~src_pos:i0 ~dst:res ~dst_pos:ulen ~len:restlen; - Ok (Bytes.unsafe_to_string res) - end else begin - (* Otherwise we are in the slow path where each character - must be normalized. *) - let buf = Buffer.create (String.length s) in - let valid = is_valid_decode_and_char d u0 in - let valid = pair_normalize ~buf ~valid s ~prev:u0' i0 in - let contents = Buffer.contents buf in - if valid then - Ok contents - else - Error contents - end - - let normalize s = - normalize_map_first s - - (* Capitalization *) - - let uchar_is_uppercase u = - let c = Uchar.to_int u in - if c < 0x80 then c >= 65 && c <= 90 else - match get_known_char u with - | Some(Upper _) -> true - | _ -> false - - let uchar_lowercase u = - let c = Uchar.to_int u in - if c < 0x80 then - if c >= 65 && c <= 90 then Uchar.of_int (c + 32) else u - else - match get_known_char u with - | Some(Upper u') -> Uchar.unsafe_of_int u' - | _ -> u - - let uchar_uppercase u = - let c = Uchar.to_int u in - if c < 0x80 then - if c >= 97 && c <= 122 then Uchar.of_int (c - 32) else u - else - match get_known_char u with - | Some(Lower u') -> Uchar.unsafe_of_int u' - | _ -> u - - let capitalize s = - normalize_map_first ~first:uchar_uppercase s - - let uncapitalize s = - normalize_map_first ~first:uchar_lowercase s - - let is_capitalized s = - s <> "" && - uchar_is_uppercase (Uchar.utf_decode_uchar (String.get_utf_8_uchar s 0)) - - (* Characters allowed in identifiers after normalization is applied. - Currently: - - ASCII letters, underscore - - Latin-9 letters, represented in NFC - - ASCII digits, single quote (but not as first character) - - dot if [with_dot] = true - *) - let uchar_valid_in_identifier ~with_dot u = - let c = Uchar.to_int u in - if c < 0x80 then - c >= 97 (* a *) && c <= 122 (* z *) - || c >= 65 (* A *) && c <= 90 (* Z *) - || c >= 48 (* 0 *) && c <= 57 (* 9 *) - || c = 95 (* underscore *) - || c = 39 (* single quote *) - || (with_dot && c = 46) (* dot *) - else - match get_known_char u with - | Some _ -> true - | None -> false - - let uchar_not_identifier_start u = - let c = Uchar.to_int u in - c >= 48 (* 0 *) && c <= 57 (* 9 *) - || c = 39 (* single quote *) - - (* Check whether a normalized string is a valid OCaml identifier. *) - - type validation_result = - | Valid - | Invalid_character of Uchar.t (** Character not allowed *) - | Invalid_beginning of Uchar.t (** Character not allowed as first char *) - - let validate_identifier ?(with_dot=false) s = - let rec check i = - if i >= String.length s then Valid else begin - let d = String.get_utf_8_uchar s i in - let u = Uchar.utf_decode_uchar d in - let i' = i + Uchar.utf_decode_length d in - if not (uchar_valid_in_identifier ~with_dot u) then - Invalid_character u - else if i = 0 && uchar_not_identifier_start u then - Invalid_beginning u - else - check i' - end - in check 0 - - let is_valid_identifier s = - validate_identifier s = Valid - - let starts_like_a_valid_identifier s = - s <> "" && - (let u = Uchar.utf_decode_uchar (String.get_utf_8_uchar s 0) in - uchar_valid_in_identifier ~with_dot:false u - && not (uchar_not_identifier_start u)) - - let is_lowercase s = - let rec is_lowercase_at len s n = - if n >= len then true - else - let d = String.get_utf_8_uchar s n in - let u = Uchar.utf_decode_uchar d in - (uchar_valid_in_identifier ~with_dot:false u) - && not (uchar_is_uppercase u) - && is_lowercase_at len s (n+Uchar.utf_decode_length d) - in - is_lowercase_at (String.length s) s 0 -end - (* File functions *) let find_in_path path name = diff --git a/utils/misc.mli b/utils/misc.mli index 24907c28dacb..db374fdf0d1f 100644 --- a/utils/misc.mli +++ b/utils/misc.mli @@ -828,66 +828,6 @@ module Magic_number : sig val all_kinds : kind list end -(** {1 Minimal support for Unicode characters in identifiers} *) - -(** Characters allowed in identifiers are, currently: - - ASCII letters A-Z a-z - - Latin-1 letters (U+00C0 - U+00FF except U+00D7 and U+00F7) - - Character sequences which normalize to the above character under NFC - - digits 0-9, underscore, single quote -*) - -module Utf8_lexeme: sig - type t = string - - val normalize: string -> (t,t) Result.t - (** Normalize the given UTF-8 encoded string. - Invalid UTF-8 sequences results in a error and are replaced - by U+FFFD. - Identifier characters are put in NFC normalized form. - Other Unicode characters are left unchanged. *) - - val capitalize: string -> (t,t) Result.t - (** Like [normalize], but if the string starts with a lowercase identifier - character, it is replaced by the corresponding uppercase character. - Subsequent characters are not changed. *) - - val uncapitalize: string -> (t,t) Result.t - (** Like [normalize], but if the string starts with an uppercase identifier - character, it is replaced by the corresponding lowercase character. - Subsequent characters are not changed. *) - - val is_capitalized: t -> bool - (** Returns [true] if the given normalized string starts with an - uppercase identifier character, [false] otherwise. May return - wrong results if the string is not normalized. *) - - val is_valid_identifier: t -> bool - (** Check whether the given normalized string is a valid OCaml identifier: - - all characters are identifier characters - - it does not start with a digit or a single quote - *) - - val is_lowercase: t -> bool - (** Returns [true] if the given normalized string only contains lowercase - identifier character, [false] otherwise. May return wrong results if the - string is not normalized. *) - - type validation_result = - | Valid - | Invalid_character of Uchar.t (** Character not allowed *) - | Invalid_beginning of Uchar.t (** Character not allowed as first char *) - - val validate_identifier: ?with_dot:bool -> t -> validation_result - (** Like [is_valid_identifier], but returns a more detailed error code. Dots - can be allowed to extend support to path-like identifiers. *) - - val starts_like_a_valid_identifier: t -> bool - (** Checks whether the given normalized string starts with an identifier - character other than a digit or a single quote. Subsequent characters - are not checked. *) -end - module RuntimeID : sig (** Manipulation of the Runtime ID values used to mangle the filenames of shared libraries and the bytecode interpreters. diff --git a/utils/utf8_lexeme.ml b/utils/utf8_lexeme.ml new file mode 100644 index 000000000000..3967566b9d39 --- /dev/null +++ b/utils/utf8_lexeme.ml @@ -0,0 +1,321 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cambium, College de France and Inria *) +(* *) +(* Copyright 2022 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Minimal support for Unicode characters in identifiers *) + +type t = string + +(* Non-ASCII letters that are allowed in identifiers (currently: Latin-9) *) + +type case = Upper of int | Lower of int + +let get_known_char c = + match Uchar.to_int c with + | 0xc0 (* À *) -> Some (Upper 0xe0 (* à *)) + | 0xe0 (* à *) -> Some (Lower 0xc0 (* À *)) + | 0xc1 (* Á *) -> Some (Upper 0xe1 (* á *)) + | 0xe1 (* á *) -> Some (Lower 0xc1 (* Á *)) + + | 0xc2 (*  *) -> Some (Upper 0xe2 (* â *)) + | 0xe2 (* â *) -> Some (Lower 0xc2 (*  *)) + | 0xc3 (* à *) -> Some (Upper 0xe3 (* ã *)) + | 0xe3 (* ã *) -> Some (Lower 0xc3 (* à *)) + + | 0xc4 (* Ä *) -> Some (Upper 0xe4 (* ä *)) + | 0xe4 (* ä *) -> Some (Lower 0xc4 (* Ä *)) + | 0xc5 (* Å *) -> Some (Upper 0xe5 (* å *)) + | 0xe5 (* å *) -> Some (Lower 0xc5 (* Å *)) + + | 0xc6 (* Æ *) -> Some (Upper 0xe6 (* æ *)) + | 0xe6 (* æ *) -> Some (Lower 0xc6 (* Æ *)) + | 0xc7 (* Ç *) -> Some (Upper 0xe7 (* ç *)) + | 0xe7 (* ç *) -> Some (Lower 0xc7 (* Ç *)) + + | 0xc8 (* È *) -> Some (Upper 0xe8 (* è *)) + | 0xe8 (* è *) -> Some (Lower 0xc8 (* È *)) + | 0xc9 (* É *) -> Some (Upper 0xe9 (* é *)) + | 0xe9 (* é *) -> Some (Lower 0xc9 (* É *)) + + | 0xca (* Ê *) -> Some (Upper 0xea (* ê *)) + | 0xea (* ê *) -> Some (Lower 0xca (* Ê *)) + | 0xcb (* Ë *) -> Some (Upper 0xeb (* ë *)) + | 0xeb (* ë *) -> Some (Lower 0xcb (* Ë *)) + + | 0xcc (* Ì *) -> Some (Upper 0xec (* ì *)) + | 0xec (* ì *) -> Some (Lower 0xcc (* Ì *)) + | 0xcd (* Í *) -> Some (Upper 0xed (* í *)) + | 0xed (* í *) -> Some (Lower 0xcd (* Í *)) + + | 0xce (* Î *) -> Some (Upper 0xee (* î *)) + | 0xee (* î *) -> Some (Lower 0xce (* Î *)) + | 0xcf (* Ï *) -> Some (Upper 0xef (* ï *)) + | 0xef (* ï *) -> Some (Lower 0xcf (* Ï *)) + + | 0xd0 (* Ð *) -> Some (Upper 0xf0 (* ð *)) + | 0xf0 (* ð *) -> Some (Lower 0xd0 (* Ð *)) + | 0xd1 (* Ñ *) -> Some (Upper 0xf1 (* ñ *)) + | 0xf1 (* ñ *) -> Some (Lower 0xd1 (* Ñ *)) + + | 0xd2 (* Ò *) -> Some (Upper 0xf2 (* ò *)) + | 0xf2 (* ò *) -> Some (Lower 0xd2 (* Ò *)) + | 0xd3 (* Ó *) -> Some (Upper 0xf3 (* ó *)) + | 0xf3 (* ó *) -> Some (Lower 0xd3 (* Ó *)) + + | 0xd4 (* Ô *) -> Some (Upper 0xf4 (* ô *)) + | 0xf4 (* ô *) -> Some (Lower 0xd4 (* Ô *)) + | 0xd5 (* Õ *) -> Some (Upper 0xf5 (* õ *)) + | 0xf5 (* õ *) -> Some (Lower 0xd5 (* Õ *)) + + | 0xd6 (* Ö *) -> Some (Upper 0xf6 (* ö *)) + | 0xf6 (* ö *) -> Some (Lower 0xd6 (* Ö *)) + | 0xd8 (* Ø *) -> Some (Upper 0xf8 (* ø *)) + | 0xf8 (* ø *) -> Some (Lower 0xd8 (* Ø *)) + + | 0xd9 (* Ù *) -> Some (Upper 0xf9 (* ù *)) + | 0xf9 (* ù *) -> Some (Lower 0xd9 (* Ù *)) + | 0xda (* Ú *) -> Some (Upper 0xfa (* ú *)) + | 0xfa (* ú *) -> Some (Lower 0xda (* Ú *)) + + | 0xdb (* Û *) -> Some (Upper 0xfb (* û *)) + | 0xfb (* û *) -> Some (Lower 0xdb (* Û *)) + | 0xdc (* Ü *) -> Some (Upper 0xfc (* ü *)) + | 0xfc (* ü *) -> Some (Lower 0xdc (* Ü *)) + + | 0xdd (* Ý *) -> Some (Upper 0xfd (* ý *)) + | 0xfd (* ý *) -> Some (Lower 0xdd (* Ý *)) + | 0xde (* Þ *) -> Some (Upper 0xfe (* þ *)) + | 0xfe (* þ *) -> Some (Lower 0xde (* Þ *)) + + | 0x160 (* Š *) -> Some (Upper 0x161 (* š *)) + | 0x161 (* š *) -> Some (Lower 0x160 (* Š *)) + | 0x17d (* Ž *) -> Some (Upper 0x17e (* ž *)) + | 0x17e (* ž *) -> Some (Lower 0x17d (* Ž *)) + + | 0x152 (* Œ *) -> Some (Upper 0x153 (* œ *)) + | 0x153 (* œ *) -> Some (Lower 0x152 (* Œ *)) + | 0x178 (* Ÿ *) -> Some (Upper 0xff (* ÿ *)) + | 0xff (* ÿ *) -> Some (Lower 0x178 (* Ÿ *)) + + | 0x1e9e (* ẞ *) -> Some (Upper 0xdf (* ß *)) + | 0xdf (* ß *) -> Some (Lower 0x1e9e (* ẞ *)) + | _ -> None + +(* NFD to NFC conversion table for the letters above *) + +let get_known_pair c1 n2 = + match Uchar.unsafe_to_char c1, Uchar.to_int n2 with + | 'A', 0x300 -> Some 0xc0 (* À *) | 'A', 0x301 -> Some 0xc1 (* Á *) + | 'A', 0x302 -> Some 0xc2 (*  *) | 'A', 0x303 -> Some 0xc3 (* à *) + | 'A', 0x308 -> Some 0xc4 (* Ä *) | 'A', 0x30a -> Some 0xc5 (* Å *) + | 'C', 0x327 -> Some 0xc7 (* Ç *) | 'E', 0x300 -> Some 0xc8 (* È *) + | 'E', 0x301 -> Some 0xc9 (* É *) | 'E', 0x302 -> Some 0xca (* Ê *) + | 'E', 0x308 -> Some 0xcb (* Ë *) | 'I', 0x300 -> Some 0xcc (* Ì *) + | 'I', 0x301 -> Some 0xcd (* Í *) | 'I', 0x302 -> Some 0xce (* Î *) + | 'I', 0x308 -> Some 0xcf (* Ï *) | 'N', 0x303 -> Some 0xd1 (* Ñ *) + | 'O', 0x300 -> Some 0xd2 (* Ò *) | 'O', 0x301 -> Some 0xd3 (* Ó *) + | 'O', 0x302 -> Some 0xd4 (* Ô *) | 'O', 0x303 -> Some 0xd5 (* Õ *) + | 'O', 0x308 -> Some 0xd6 (* Ö *) + | 'U', 0x300 -> Some 0xd9 (* Ù *) | 'U', 0x301 -> Some 0xda (* Ú *) + | 'U', 0x302 -> Some 0xdb (* Û *) | 'U', 0x308 -> Some 0xdc (* Ü *) + | 'Y', 0x301 -> Some 0xdd (* Ý *) | 'Y', 0x308 -> Some 0x178 (* Ÿ *) + | 'S', 0x30c -> Some 0x160 (* Š *) | 'Z', 0x30c -> Some 0x17d (* Ž *) + | 'a', 0x300 -> Some 0xe0 (* à *) | 'a', 0x301 -> Some 0xe1 (* á *) + | 'a', 0x302 -> Some 0xe2 (* â *) | 'a', 0x303 -> Some 0xe3 (* ã *) + | 'a', 0x308 -> Some 0xe4 (* ä *) | 'a', 0x30a -> Some 0xe5 (* å *) + | 'c', 0x327 -> Some 0xe7 (* ç *) | 'e', 0x300 -> Some 0xe8 (* è *) + | 'e', 0x301 -> Some 0xe9 (* é *) | 'e', 0x302 -> Some 0xea (* ê *) + | 'e', 0x308 -> Some 0xeb (* ë *) | 'i', 0x300 -> Some 0xec (* ì *) + | 'i', 0x301 -> Some 0xed (* í *) | 'i', 0x302 -> Some 0xee (* î *) + | 'i', 0x308 -> Some 0xef (* ï *) | 'n', 0x303 -> Some 0xf1 (* ñ *) + | 'o', 0x300 -> Some 0xf2 (* ò *) | 'o', 0x301 -> Some 0xf3 (* ó *) + | 'o', 0x302 -> Some 0xf4 (* ô *) | 'o', 0x303 -> Some 0xf5 (* õ *) + | 'o', 0x308 -> Some 0xf6 (* ö *) + | 'u', 0x300 -> Some 0xf9 (* ù *) | 'u', 0x301 -> Some 0xfa (* ú *) + | 'u', 0x302 -> Some 0xfb (* û *) | 'u', 0x308 -> Some 0xfc (* ü *) + | 'y', 0x301 -> Some 0xfd (* ý *) | 'y', 0x308 -> Some 0xff (* ÿ *) + | 's', 0x30c -> Some 0x161 (* š *) | 'z', 0x30c -> Some 0x17e (* ž *) + | _ -> None + +let is_valid_decode_and_char decode uchar = + Uchar.utf_decode_is_valid decode && uchar <> Uchar.rep + +let rec pair_normalize ~buf ~valid s ~prev i = + if i >= String.length s then begin + Buffer.add_utf_8_uchar buf prev; + valid + end else begin + let d = String.get_utf_8_uchar s i in + let u = Uchar.utf_decode_uchar d in + let valid = valid && is_valid_decode_and_char d u in + let i' = i + Uchar.utf_decode_length d in + match get_known_pair prev u with + | Some u' -> + let u' = Uchar.unsafe_of_int u' in + pair_normalize ~buf ~valid s ~prev:u' i' + | None -> + Buffer.add_utf_8_uchar buf prev; + pair_normalize ~buf ~valid s ~prev:u i' + end + +let normalize_map_first ?first s = + (* [first : Uchar.t -> Uchar.t] is an optional function to be + applied to the first character of [s] only.*) + if String.is_empty s then Ok "" + else + let only_ascii = String.for_all Char.Ascii.is_valid s in + (* get the first character of [s] *) + let d = String.get_utf_8_uchar s 0 in + let u0 = Uchar.utf_decode_uchar d in + let i0 = Uchar.utf_decode_length d in + let u0' = match first with None -> u0 + | Some transform -> transform u0 + in + if u0' = u0 && only_ascii then + (* If the first character is unchanged by the [first] transformation, + and the string is ascii-only, we can return it unchanged. *) + Ok s + else if only_ascii then begin + (* If the first character is changed but the rest + of the string is ascii-only, we can concatenate + the new first character with the rest. *) + let ulen = Uchar.utf_8_byte_length u0' in + let restlen = String.length s - i0 in + let res = Bytes.create (ulen + restlen) in + let ulen' = Bytes.set_utf_8_uchar res 0 u0' in + assert (ulen = ulen'); + BytesLabels.blit_string + ~src:s ~src_pos:i0 ~dst:res ~dst_pos:ulen ~len:restlen; + Ok (Bytes.unsafe_to_string res) + end else begin + (* Otherwise we are in the slow path where each character + must be normalized. *) + let buf = Buffer.create (String.length s) in + let valid = is_valid_decode_and_char d u0 in + let valid = pair_normalize ~buf ~valid s ~prev:u0' i0 in + let contents = Buffer.contents buf in + if valid then + Ok contents + else + Error contents + end + +let normalize s = + normalize_map_first s + +(* Capitalization *) + +let uchar_is_uppercase u = + let c = Uchar.to_int u in + if c < 0x80 then c >= 65 && c <= 90 else + match get_known_char u with + | Some(Upper _) -> true + | _ -> false + +let uchar_lowercase u = + let c = Uchar.to_int u in + if c < 0x80 then + if c >= 65 && c <= 90 then Uchar.of_int (c + 32) else u + else + match get_known_char u with + | Some(Upper u') -> Uchar.unsafe_of_int u' + | _ -> u + +let uchar_uppercase u = + let c = Uchar.to_int u in + if c < 0x80 then + if c >= 97 && c <= 122 then Uchar.of_int (c - 32) else u + else + match get_known_char u with + | Some(Lower u') -> Uchar.unsafe_of_int u' + | _ -> u + +let capitalize s = + normalize_map_first ~first:uchar_uppercase s + +let uncapitalize s = + normalize_map_first ~first:uchar_lowercase s + +let is_capitalized s = + s <> "" && + uchar_is_uppercase (Uchar.utf_decode_uchar (String.get_utf_8_uchar s 0)) + +(* Characters allowed in identifiers after normalization is applied. + Currently: + - ASCII letters, underscore + - Latin-9 letters, represented in NFC + - ASCII digits, single quote (but not as first character) + - dot if [with_dot] = true +*) +let uchar_valid_in_identifier ~with_dot u = + let c = Uchar.to_int u in + if c < 0x80 then + c >= 97 (* a *) && c <= 122 (* z *) + || c >= 65 (* A *) && c <= 90 (* Z *) + || c >= 48 (* 0 *) && c <= 57 (* 9 *) + || c = 95 (* underscore *) + || c = 39 (* single quote *) + || (with_dot && c = 46) (* dot *) + else + match get_known_char u with + | Some _ -> true + | None -> false + +let uchar_not_identifier_start u = + let c = Uchar.to_int u in + c >= 48 (* 0 *) && c <= 57 (* 9 *) + || c = 39 (* single quote *) + +(* Check whether a normalized string is a valid OCaml identifier. *) + +type validation_result = + | Valid + | Invalid_character of Uchar.t (** Character not allowed *) + | Invalid_beginning of Uchar.t (** Character not allowed as first char *) + +let validate_identifier ?(with_dot=false) s = + let rec check i = + if i >= String.length s then Valid else begin + let d = String.get_utf_8_uchar s i in + let u = Uchar.utf_decode_uchar d in + let i' = i + Uchar.utf_decode_length d in + if not (uchar_valid_in_identifier ~with_dot u) then + Invalid_character u + else if i = 0 && uchar_not_identifier_start u then + Invalid_beginning u + else + check i' + end + in check 0 + +let is_valid_identifier s = + validate_identifier s = Valid + +let starts_like_a_valid_identifier s = + s <> "" && + (let u = Uchar.utf_decode_uchar (String.get_utf_8_uchar s 0) in + uchar_valid_in_identifier ~with_dot:false u + && not (uchar_not_identifier_start u)) + +let is_lowercase s = + let rec is_lowercase_at len s n = + if n >= len then true + else + let d = String.get_utf_8_uchar s n in + let u = Uchar.utf_decode_uchar d in + (uchar_valid_in_identifier ~with_dot:false u) + && not (uchar_is_uppercase u) + && is_lowercase_at len s (n+Uchar.utf_decode_length d) + in + is_lowercase_at (String.length s) s 0 diff --git a/utils/utf8_lexeme.mli b/utils/utf8_lexeme.mli new file mode 100644 index 000000000000..d864450f85e9 --- /dev/null +++ b/utils/utf8_lexeme.mli @@ -0,0 +1,72 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cambium, College de France and Inria *) +(* *) +(* Copyright 2022 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Minimal support for Unicode characters in identifiers *) + +(** Characters allowed in identifiers are, currently: + - ASCII letters A-Z a-z + - Latin-1 letters (U+00C0 - U+00FF except U+00D7 and U+00F7) + - Character sequences which normalize to the above character under NFC + - digits 0-9, underscore, single quote +*) + +type t = string + +val normalize: string -> (t,t) Result.t +(** Normalize the given UTF-8 encoded string. + Invalid UTF-8 sequences results in a error and are replaced + by U+FFFD. + Identifier characters are put in NFC normalized form. + Other Unicode characters are left unchanged. *) + +val capitalize: string -> (t,t) Result.t +(** Like [normalize], but if the string starts with a lowercase identifier + character, it is replaced by the corresponding uppercase character. + Subsequent characters are not changed. *) + +val uncapitalize: string -> (t,t) Result.t +(** Like [normalize], but if the string starts with an uppercase identifier + character, it is replaced by the corresponding lowercase character. + Subsequent characters are not changed. *) + +val is_capitalized: t -> bool +(** Returns [true] if the given normalized string starts with an + uppercase identifier character, [false] otherwise. May return + wrong results if the string is not normalized. *) + +val is_valid_identifier: t -> bool +(** Check whether the given normalized string is a valid OCaml identifier: + - all characters are identifier characters + - it does not start with a digit or a single quote +*) + +val is_lowercase: t -> bool +(** Returns [true] if the given normalized string only contains lowercase + identifier character, [false] otherwise. May return wrong results if the + string is not normalized. *) + +type validation_result = + | Valid + | Invalid_character of Uchar.t (** Character not allowed *) + | Invalid_beginning of Uchar.t (** Character not allowed as first char *) + +val validate_identifier: ?with_dot:bool -> t -> validation_result +(** Like [is_valid_identifier], but returns a more detailed error code. Dots + can be allowed to extend support to path-like identifiers. *) + +val starts_like_a_valid_identifier: t -> bool +(** Checks whether the given normalized string starts with an identifier + character other than a digit or a single quote. Subsequent characters + are not checked. *)